Raymond Toy pushed to branch issue-365-add-strerror at cmucl / cmucl

Commits:

26 changed files:

Changes:

  • .gitlab-ci.yml
    1 1
     variables:
    
    2 2
       download_url: "https://common-lisp.net/project/cmucl/downloads/snapshots/2024/08"
    
    3 3
       version: "2024-08-x86"
    
    4
    -  bootstrap: ""
    
    4
    +  bootstrap: "-B boot-2024-08"
    
    5 5
     
    
    6 6
     
    
    7 7
     stages:
    

  • bin/build.sh
    ... ... @@ -153,6 +153,15 @@ buildit ()
    153 153
         fi
    
    154 154
     }
    
    155 155
     
    
    156
    +# Create unix-errno.lisp
    
    157
    +case `uname -s` in
    
    158
    +    Linux) ERRNO_FILES=/usr/include/asm-generic/errno*.h
    
    159
    +	   ;;
    
    160
    +esac
    
    161
    +
    
    162
    +#awk -f bin/create-errno.awk ${ERRNO_FILES} > src/code/unix-errno.lisp
    
    163
    +bin/create-errno.sh ${ERRNO_FILES} > src/code/unix-errno.lisp
    
    164
    +
    
    156 165
     BUILDWORLD="$TOOLDIR/build-world.sh"
    
    157 166
     BUILD_POT="yes"
    
    158 167
     UPDATE_TRANS=
    
    ... ... @@ -204,19 +213,6 @@ fi
    204 213
     
    
    205 214
     echo base = $BASE
    
    206 215
     
    
    207
    -# Determine if we need to generate unix-errno.lisp
    
    208
    -
    
    209
    -# Set to "yes" if we auto-generate code/unix-errno.lisp.
    
    210
    -GEN_ERRNO=
    
    211
    -
    
    212
    -case `uname -s` in
    
    213
    -    # Add more cases as we support more OSes
    
    214
    -    Linux)
    
    215
    -	GEN_ERRNO=yes
    
    216
    -	;;
    
    217
    -esac
    
    218
    -
    
    219
    -
    
    220 216
     bootfiles_dir=$SRCDIR/bootfiles/$version
    
    221 217
     if [ -n "$bootfiles" ]; then
    
    222 218
         for file in $bootfiles; do
    

  • bin/create-errno.sh
    1
    +#! /bin/sh
    
    2
    +
    
    3
    +# Generates the contents of the file code/unix-errno.lisp.  The args
    
    4
    +# to this script, if supplied, must be a list of files containing the
    
    5
    +# definitions of all the Unix errno values.
    
    6
    +#
    
    7
    +
    
    8
    +# The header was copied from code/unix.lisp.  This includes all the
    
    9
    +# support code for DEF-UNIX-ERROR and for all OSes that don't use the
    
    10
    +# awk script to create the DEF-UNIX-ERROR forms.
    
    11
    +#
    
    12
    +cat <<EOF
    
    13
    +;;; -*- Package: UNIX -*-
    
    14
    +;;;
    
    15
    +;;; **********************************************************************
    
    16
    +;;; This code was written as part of the CMU Common Lisp project at
    
    17
    +;;; Carnegie Mellon University, and has been placed in the public domain.
    
    18
    +;;;
    
    19
    +(ext:file-comment
    
    20
    +  "$Header: src/code/unix-errno.lisp $")
    
    21
    +;;;
    
    22
    +;;; **********************************************************************
    
    23
    +;;;
    
    24
    +;;; This file contains the UNIX low-level support, just enough to run
    
    25
    +;;; CMUCL.
    
    26
    +;;;
    
    27
    +(in-package "UNIX")
    
    28
    +(intl:textdomain "cmucl-unix")
    
    29
    +
    
    30
    +;;;; Errno stuff.
    
    31
    +(eval-when (compile eval)
    
    32
    +
    
    33
    +(defparameter *compiler-unix-errors* nil)
    
    34
    +
    
    35
    +(defmacro def-unix-error (name number &optional description)
    
    36
    +  "Define a constant named Name corresponding to the Unix errno value
    
    37
    +  Number.  A description of the errno is optional in Description."
    
    38
    +  \`(progn
    
    39
    +     (eval-when (compile eval)
    
    40
    +       (push (cons ,number ,description) *compiler-unix-errors*))
    
    41
    +     (defconstant ,name ,number ,description)
    
    42
    +     (export ',name)))
    
    43
    +
    
    44
    +(defmacro emit-unix-errors ()
    
    45
    +  (let* ((max (apply #'max (mapcar #'car *compiler-unix-errors*)))
    
    46
    +	 (array (make-array (1+ max) :initial-element nil)))
    
    47
    +    (dolist (error *compiler-unix-errors*)
    
    48
    +      (setf (svref array (car error)) (cdr error)))
    
    49
    +    \`(progn
    
    50
    +       (defvar *unix-errors* ',array)
    
    51
    +       (declaim (simple-vector *unix-errors*)))))
    
    52
    +
    
    53
    +) ;eval-when
    
    54
    +
    
    55
    +;;; 
    
    56
    +;;; From <errno.h>
    
    57
    +;;; 
    
    58
    +(def-unix-error ESUCCESS 0 _N"Successful")
    
    59
    +#-linux
    
    60
    +(progn
    
    61
    +(def-unix-error EPERM 1 _N"Operation not permitted")
    
    62
    +(def-unix-error ENOENT 2 _N"No such file or directory")
    
    63
    +(def-unix-error ESRCH 3 _N"No such process")
    
    64
    +(def-unix-error EINTR 4 _N"Interrupted system call")
    
    65
    +(def-unix-error EIO 5 _N"I/O error")
    
    66
    +(def-unix-error ENXIO 6 _N"Device not configured")
    
    67
    +(def-unix-error E2BIG 7 _N"Arg list too long")
    
    68
    +(def-unix-error ENOEXEC 8 _N"Exec format error")
    
    69
    +(def-unix-error EBADF 9 _N"Bad file descriptor")
    
    70
    +(def-unix-error ECHILD 10 _N"No child process")
    
    71
    +)
    
    72
    +#+bsd(def-unix-error EDEADLK 11 _N"Resource deadlock avoided")
    
    73
    +#-(or bsd linux) (def-unix-error EAGAIN 11 #-linux _N"No more processes" #+linux _N"Try again")
    
    74
    +#-linux
    
    75
    +(progn
    
    76
    +(def-unix-error ENOMEM 12 _N"Out of memory")
    
    77
    +(def-unix-error EACCES 13 _N"Permission denied")
    
    78
    +(def-unix-error EFAULT 14 _N"Bad address")
    
    79
    +(def-unix-error ENOTBLK 15 _N"Block device required")
    
    80
    +(def-unix-error EBUSY 16 _N"Device or resource busy")
    
    81
    +(def-unix-error EEXIST 17 _N"File exists")
    
    82
    +(def-unix-error EXDEV 18 _N"Cross-device link")
    
    83
    +(def-unix-error ENODEV 19 _N"No such device")
    
    84
    +(def-unix-error ENOTDIR 20 _N"Not a director")
    
    85
    +(def-unix-error EISDIR 21 _N"Is a directory")
    
    86
    +(def-unix-error EINVAL 22 _N"Invalid argument")
    
    87
    +(def-unix-error ENFILE 23 _N"File table overflow")
    
    88
    +(def-unix-error EMFILE 24 _N"Too many open files")
    
    89
    +(def-unix-error ENOTTY 25 _N"Inappropriate ioctl for device")
    
    90
    +(def-unix-error ETXTBSY 26 _N"Text file busy")
    
    91
    +(def-unix-error EFBIG 27 _N"File too large")
    
    92
    +(def-unix-error ENOSPC 28 _N"No space left on device")
    
    93
    +(def-unix-error ESPIPE 29 _N"Illegal seek")
    
    94
    +(def-unix-error EROFS 30 _N"Read-only file system")
    
    95
    +(def-unix-error EMLINK 31 _N"Too many links")
    
    96
    +(def-unix-error EPIPE 32 _N"Broken pipe")
    
    97
    +;;; 
    
    98
    +;;; Math
    
    99
    +(def-unix-error EDOM 33 _N"Numerical argument out of domain")
    
    100
    +(def-unix-error ERANGE 34 #-linux _N"Result too large" #+linux _N"Math result not representable")
    
    101
    +)
    
    102
    +;;; 
    
    103
    +#-(or linux svr4)
    
    104
    +(progn
    
    105
    +;;; non-blocking and interrupt i/o
    
    106
    +(def-unix-error EWOULDBLOCK 35 _N"Operation would block")
    
    107
    +#-bsd(def-unix-error EDEADLK 35 _N"Operation would block") ; Ditto
    
    108
    +#+bsd(def-unix-error EAGAIN 35 _N"Resource temporarily unavailable")
    
    109
    +(def-unix-error EINPROGRESS 36 _N"Operation now in progress")
    
    110
    +(def-unix-error EALREADY 37 _N"Operation already in progress")
    
    111
    +;;;
    
    112
    +;;; ipc/network software
    
    113
    +(def-unix-error ENOTSOCK 38 _N"Socket operation on non-socket")
    
    114
    +(def-unix-error EDESTADDRREQ 39 _N"Destination address required")
    
    115
    +(def-unix-error EMSGSIZE 40 _N"Message too long")
    
    116
    +(def-unix-error EPROTOTYPE 41 _N"Protocol wrong type for socket")
    
    117
    +(def-unix-error ENOPROTOOPT 42 _N"Protocol not available")
    
    118
    +(def-unix-error EPROTONOSUPPORT 43 _N"Protocol not supported")
    
    119
    +(def-unix-error ESOCKTNOSUPPORT 44 _N"Socket type not supported")
    
    120
    +(def-unix-error EOPNOTSUPP 45 _N"Operation not supported on socket")
    
    121
    +(def-unix-error EPFNOSUPPORT 46 _N"Protocol family not supported")
    
    122
    +(def-unix-error EAFNOSUPPORT 47 _N"Address family not supported by protocol family")
    
    123
    +(def-unix-error EADDRINUSE 48 _N"Address already in use")
    
    124
    +(def-unix-error EADDRNOTAVAIL 49 _N"Can't assign requested address")
    
    125
    +;;;
    
    126
    +;;; operational errors
    
    127
    +(def-unix-error ENETDOWN 50 _N"Network is down")
    
    128
    +(def-unix-error ENETUNREACH 51 _N"Network is unreachable")
    
    129
    +(def-unix-error ENETRESET 52 _N"Network dropped connection on reset")
    
    130
    +(def-unix-error ECONNABORTED 53 _N"Software caused connection abort")
    
    131
    +(def-unix-error ECONNRESET 54 _N"Connection reset by peer")
    
    132
    +(def-unix-error ENOBUFS 55 _N"No buffer space available")
    
    133
    +(def-unix-error EISCONN 56 _N"Socket is already connected")
    
    134
    +(def-unix-error ENOTCONN 57 _N"Socket is not connected")
    
    135
    +(def-unix-error ESHUTDOWN 58 _N"Can't send after socket shutdown")
    
    136
    +(def-unix-error ETOOMANYREFS 59 _N"Too many references: can't splice")
    
    137
    +(def-unix-error ETIMEDOUT 60 _N"Connection timed out")
    
    138
    +(def-unix-error ECONNREFUSED 61 _N"Connection refused")
    
    139
    +;;; 
    
    140
    +(def-unix-error ELOOP 62 _N"Too many levels of symbolic links")
    
    141
    +(def-unix-error ENAMETOOLONG 63 _N"File name too long")
    
    142
    +;;; 
    
    143
    +(def-unix-error EHOSTDOWN 64 _N"Host is down")
    
    144
    +(def-unix-error EHOSTUNREACH 65 _N"No route to host")
    
    145
    +(def-unix-error ENOTEMPTY 66 _N"Directory not empty")
    
    146
    +;;; 
    
    147
    +;;; quotas & resource 
    
    148
    +(def-unix-error EPROCLIM 67 _N"Too many processes")
    
    149
    +(def-unix-error EUSERS 68 _N"Too many users")
    
    150
    +(def-unix-error EDQUOT 69 _N"Disc quota exceeded")
    
    151
    +;;;
    
    152
    +;;; CMU RFS
    
    153
    +(def-unix-error ELOCAL 126 _N"namei should continue locally")
    
    154
    +(def-unix-error EREMOTE 127 _N"namei was handled remotely")
    
    155
    +;;;
    
    156
    +;;; VICE
    
    157
    +(def-unix-error EVICEERR 70 _N"Remote file system error _N")
    
    158
    +(def-unix-error EVICEOP 71 _N"syscall was handled by Vice")
    
    159
    +)
    
    160
    +#+svr4
    
    161
    +(progn
    
    162
    +(def-unix-error ENOMSG 35 _N"No message of desired type")
    
    163
    +(def-unix-error EIDRM 36 _N"Identifier removed")
    
    164
    +(def-unix-error ECHRNG 37 _N"Channel number out of range")
    
    165
    +(def-unix-error EL2NSYNC 38 _N"Level 2 not synchronized")
    
    166
    +(def-unix-error EL3HLT 39 _N"Level 3 halted")
    
    167
    +(def-unix-error EL3RST 40 _N"Level 3 reset")
    
    168
    +(def-unix-error ELNRNG 41 _N"Link number out of range")
    
    169
    +(def-unix-error EUNATCH 42 _N"Protocol driver not attached")
    
    170
    +(def-unix-error ENOCSI 43 _N"No CSI structure available")
    
    171
    +(def-unix-error EL2HLT 44 _N"Level 2 halted")
    
    172
    +(def-unix-error EDEADLK 45 _N"Deadlock situation detected/avoided")
    
    173
    +(def-unix-error ENOLCK 46 _N"No record locks available")
    
    174
    +(def-unix-error ECANCELED 47 _N"Error 47")
    
    175
    +(def-unix-error ENOTSUP 48 _N"Error 48")
    
    176
    +(def-unix-error EBADE 50 _N"Bad exchange descriptor")
    
    177
    +(def-unix-error EBADR 51 _N"Bad request descriptor")
    
    178
    +(def-unix-error EXFULL 52 _N"Message tables full")
    
    179
    +(def-unix-error ENOANO 53 _N"Anode table overflow")
    
    180
    +(def-unix-error EBADRQC 54 _N"Bad request code")
    
    181
    +(def-unix-error EBADSLT 55 _N"Invalid slot")
    
    182
    +(def-unix-error EDEADLOCK 56 _N"File locking deadlock")
    
    183
    +(def-unix-error EBFONT 57 _N"Bad font file format")
    
    184
    +(def-unix-error ENOSTR 60 _N"Not a stream device")
    
    185
    +(def-unix-error ENODATA 61 _N"No data available")
    
    186
    +(def-unix-error ETIME 62 _N"Timer expired")
    
    187
    +(def-unix-error ENOSR 63 _N"Out of stream resources")
    
    188
    +(def-unix-error ENONET 64 _N"Machine is not on the network")
    
    189
    +(def-unix-error ENOPKG 65 _N"Package not installed")
    
    190
    +(def-unix-error EREMOTE 66 _N"Object is remote")
    
    191
    +(def-unix-error ENOLINK 67 _N"Link has been severed")
    
    192
    +(def-unix-error EADV 68 _N"Advertise error")
    
    193
    +(def-unix-error ESRMNT 69 _N"Srmount error")
    
    194
    +(def-unix-error ECOMM 70 _N"Communication error on send")
    
    195
    +(def-unix-error EPROTO 71 _N"Protocol error")
    
    196
    +(def-unix-error EMULTIHOP 74 _N"Multihop attempted")
    
    197
    +(def-unix-error EBADMSG 77 _N"Not a data message")
    
    198
    +(def-unix-error ENAMETOOLONG 78 _N"File name too long")
    
    199
    +(def-unix-error EOVERFLOW 79 _N"Value too large for defined data type")
    
    200
    +(def-unix-error ENOTUNIQ 80 _N"Name not unique on network")
    
    201
    +(def-unix-error EBADFD 81 _N"File descriptor in bad state")
    
    202
    +(def-unix-error EREMCHG 82 _N"Remote address changed")
    
    203
    +(def-unix-error ELIBACC 83 _N"Can not access a needed shared library")
    
    204
    +(def-unix-error ELIBBAD 84 _N"Accessing a corrupted shared library")
    
    205
    +(def-unix-error ELIBSCN 85 _N".lib section in a.out corrupted")
    
    206
    +(def-unix-error ELIBMAX 86 _N"Attempting to link in more shared libraries than system limit")
    
    207
    +(def-unix-error ELIBEXEC 87 _N"Can not exec a shared library directly")
    
    208
    +(def-unix-error EILSEQ 88 _N"Error 88")
    
    209
    +(def-unix-error ENOSYS 89 _N"Operation not applicable")
    
    210
    +(def-unix-error ELOOP 90 _N"Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS")
    
    211
    +(def-unix-error ERESTART 91 _N"Error 91")
    
    212
    +(def-unix-error ESTRPIPE 92 _N"Error 92")
    
    213
    +(def-unix-error ENOTEMPTY 93 _N"Directory not empty")
    
    214
    +(def-unix-error EUSERS 94 _N"Too many users")
    
    215
    +(def-unix-error ENOTSOCK 95 _N"Socket operation on non-socket")
    
    216
    +(def-unix-error EDESTADDRREQ 96 _N"Destination address required")
    
    217
    +(def-unix-error EMSGSIZE 97 _N"Message too long")
    
    218
    +(def-unix-error EPROTOTYPE 98 _N"Protocol wrong type for socket")
    
    219
    +(def-unix-error ENOPROTOOPT 99 _N"Option not supported by protocol")
    
    220
    +(def-unix-error EPROTONOSUPPORT 120 _N"Protocol not supported")
    
    221
    +(def-unix-error ESOCKTNOSUPPORT 121 _N"Socket type not supported")
    
    222
    +(def-unix-error EOPNOTSUPP 122 _N"Operation not supported on transport endpoint")
    
    223
    +(def-unix-error EPFNOSUPPORT 123 _N"Protocol family not supported")
    
    224
    +(def-unix-error EAFNOSUPPORT 124 _N"Address family not supported by protocol family")
    
    225
    +(def-unix-error EADDRINUSE 125 _N"Address already in use")
    
    226
    +(def-unix-error EADDRNOTAVAIL 126 _N"Cannot assign requested address")
    
    227
    +(def-unix-error ENETDOWN 127 _N"Network is down")
    
    228
    +(def-unix-error ENETUNREACH 128 _N"Network is unreachable")
    
    229
    +(def-unix-error ENETRESET 129 _N"Network dropped connection because of reset")
    
    230
    +(def-unix-error ECONNABORTED 130 _N"Software caused connection abort")
    
    231
    +(def-unix-error ECONNRESET 131 _N"Connection reset by peer")
    
    232
    +(def-unix-error ENOBUFS 132 _N"No buffer space available")
    
    233
    +(def-unix-error EISCONN 133 _N"Transport endpoint is already connected")
    
    234
    +(def-unix-error ENOTCONN 134 _N"Transport endpoint is not connected")
    
    235
    +(def-unix-error ESHUTDOWN 143 _N"Cannot send after socket shutdown")
    
    236
    +(def-unix-error ETOOMANYREFS 144 _N"Too many references: cannot splice")
    
    237
    +(def-unix-error ETIMEDOUT 145 _N"Connection timed out")
    
    238
    +(def-unix-error ECONNREFUSED 146 _N"Connection refused")
    
    239
    +(def-unix-error EHOSTDOWN 147 _N"Host is down")
    
    240
    +(def-unix-error EHOSTUNREACH 148 _N"No route to host")
    
    241
    +(def-unix-error EWOULDBLOCK 11 _N"Resource temporarily unavailable")
    
    242
    +(def-unix-error EALREADY 149 _N"Operation already in progress")
    
    243
    +(def-unix-error EINPROGRESS 150 _N"Operation now in progress")
    
    244
    +(def-unix-error ESTALE 151 _N"Stale NFS file handle")
    
    245
    +)
    
    246
    +
    
    247
    +;;; Auto-generated forms, if any.
    
    248
    +EOF
    
    249
    +
    
    250
    +# Create appropriate DEF-UNIX-ERROR forms by reading header files
    
    251
    +# containing the C definitions.
    
    252
    +awk '/^#define[ \t]+(E[A-Z0-9]+)[ \t]+([A-Z0-9]+).*$/ {
    
    253
    +    printf "(def-unix-error %s %s)\n", $2, $3;
    
    254
    +}' "$@"
    
    255
    +
    
    256
    +# The tail was also copied from code/unix.lisp.  It's needed to tell
    
    257
    +# Lisp about the errno values.
    
    258
    +cat <<EOF
    
    259
    +;;; End auto-generated forms, if any.
    
    260
    +
    
    261
    +;;;
    
    262
    +;;; And now for something completely different ...
    
    263
    +(emit-unix-errors)
    
    264
    +EOF

  • bin/cross-build-world.sh
    ... ... @@ -59,16 +59,6 @@ CROSS="`echo $2 | sed 's:/*$::'`"
    59 59
     SCRIPT="$3"
    
    60 60
     LISP="${4:-lisp}"
    
    61 61
     
    
    62
    -# Determine if we need to generate unix-errno.lisp
    
    63
    -# Set to "yes" if we auto-generate code/unix-errno.lisp.
    
    64
    -GEN_ERRNO=
    
    65
    -case `uname -s` in
    
    66
    -    # Add more cases as we support more OSes
    
    67
    -    Linux)
    
    68
    -	GEN_ERRNO=yes
    
    69
    -	;;
    
    70
    -esac
    
    71
    -
    
    72 62
     if [ -z "$BOOTSTRAP" ]; then
    
    73 63
         CROSSBOOT="$TARGET/cross-bootstrap.lisp"
    
    74 64
     else
    
    ... ... @@ -94,10 +84,14 @@ then
    94 84
     		sed "s:^src:$CROSS:g" | xargs mkdir
    
    95 85
     fi
    
    96 86
     
    
    97
    -if [ "$GEN_ERRNO" = "yes" ]; then
    
    98
    -    # Generate code/unix-errno.lisp
    
    99
    -    $MAKE -C $TARGET/lisp ../code/unix-errno.lisp
    
    100
    -fi
    
    87
    +# Create unix-errno.lisp
    
    88
    +case `uname -s` in
    
    89
    +    Linux) ERRNO_FILES=/usr/include/asm-generic/errno*.h
    
    90
    +	   ;;
    
    91
    +esac
    
    92
    +
    
    93
    +#awk -f bin/create-errno.awk ${ERRNO_FILES} > src/code/unix-errno.lisp
    
    94
    +bin/create-errno.sh ${ERRNO_FILES} > src/code/unix-errno.lisp
    
    101 95
     
    
    102 96
     echo cross boot = $CROSSBOOT
    
    103 97
     $LISP "$@" -noinit -nositeinit <<EOF
    

  • src/bootfiles/21e/boot-2024-08.lisp
    1
    +;; Bootstrap file for the ef-octet-count changes.  Just need to change
    
    2
    +;; the value of +ef-max+
    
    3
    +
    
    4
    +(in-package "STREAM")
    
    5
    +
    
    6
    +(handler-bind
    
    7
    +    ((error (lambda (c)
    
    8
    +	      (declare (ignore c))
    
    9
    +	      (invoke-restart 'continue))))
    
    10
    +  (defconstant +ef-max+ 14))

  • src/code/exports.lisp
    ... ... @@ -1456,7 +1456,8 @@
    1456 1456
         (name
    
    1457 1457
           '("STRING-TO-OCTETS" "OCTETS-TO-STRING" "*DEFAULT-EXTERNAL-FORMAT*"
    
    1458 1458
     	"STRING-ENCODE" "STRING-DECODE" "SET-SYSTEM-EXTERNAL-FORMAT"
    
    1459
    -	"LIST-ALL-EXTERNAL-FORMATS" "DESCRIBE-EXTERNAL-FORMAT"))
    
    1459
    +	"LIST-ALL-EXTERNAL-FORMATS" "DESCRIBE-EXTERNAL-FORMAT"
    
    1460
    +	"STRING-OCTET-COUNT"))
    
    1460 1461
       (intern name "STREAM"))
    
    1461 1462
     
    
    1462 1463
     (defpackage "EXTENSIONS"
    

  • src/code/extfmts.lisp
    ... ... @@ -19,7 +19,8 @@
    19 19
     	  string-encode string-decode set-system-external-format
    
    20 20
     	  +replacement-character-code+
    
    21 21
     	  list-all-external-formats
    
    22
    -	  describe-external-format))
    
    22
    +	  describe-external-format
    
    23
    +	  string-octet-count))
    
    23 24
     
    
    24 25
     (defvar *default-external-format*
    
    25 26
       :utf-8
    
    ... ... @@ -52,6 +53,7 @@
    52 53
       flush					; flush state
    
    53 54
       copy-state				; copy state
    
    54 55
       osc					; octets to string, counted
    
    56
    +  oc					; number of octets to encode string
    
    55 57
       max)
    
    56 58
     
    
    57 59
     ;; Unicode replacement character U+FFFD
    
    ... ... @@ -96,6 +98,11 @@
    96 98
       (copy-state nil :type (or null function) :read-only t)
    
    97 99
       (cache nil :type (or null simple-vector))
    
    98 100
       ;;
    
    101
    +  ;; Function to count the number of octets needed to encode a
    
    102
    +  ;; codepoint.  Basically like code-to-octets, except we return the
    
    103
    +  ;; number of octets needed instead of the octets themselves.
    
    104
    +  (octet-count #'%efni :type (or null function) :read-only t)
    
    105
    +  ;;
    
    99 106
       ;; Minimum number of octets needed to form a codepoint
    
    100 107
       (min 1 :type kernel:index :read-only t)
    
    101 108
       ;;
    
    ... ... @@ -126,7 +133,8 @@
    126 133
       (setf (gethash (ef-name ef) *external-formats*) ef))
    
    127 134
     
    
    128 135
     (declaim (inline ef-octets-to-code ef-code-to-octets ef-flush-state ef-copy-state
    
    129
    -		 ef-cache ef-min-octets ef-max-octets))
    
    136
    +		 ef-cache ef-min-octets ef-max-octets
    
    137
    +		 ef-octet-count))
    
    130 138
     
    
    131 139
     (defun ef-octets-to-code (ef)
    
    132 140
       (efx-octets-to-code (ef-efx ef)))
    
    ... ... @@ -143,6 +151,9 @@
    143 151
     (defun ef-cache (ef)
    
    144 152
       (efx-cache (ef-efx ef)))
    
    145 153
     
    
    154
    +(defun ef-octet-count (ef)
    
    155
    +  (efx-octet-count (ef-efx ef)))
    
    156
    +
    
    146 157
     (defun ef-min-octets (ef)
    
    147 158
       (efx-min (ef-efx ef)))
    
    148 159
     
    
    ... ... @@ -166,7 +177,7 @@
    166 177
     ;;; DEFINE-EXTERNAL-FORMAT  -- Public
    
    167 178
     ;;;
    
    168 179
     ;;; name (&key base min max size documentation) (&rest slots) octets-to-code
    
    169
    -;;;       code-to-octets flush-state copy-state
    
    180
    +;;;       code-to-octets flush-state copy-state octet-count
    
    170 181
     ;;;
    
    171 182
     ;;;   Define a new external format.  If base is specified, then an
    
    172 183
     ;;;   external format is defined that is based on a previously defined
    
    ... ... @@ -228,6 +239,15 @@
    228 239
     ;;;   This should probably be a deep copy so that if the original
    
    229 240
     ;;;   state is modified, the copy is not.
    
    230 241
     ;;;
    
    242
    +;;; octet-count (code state error &rest vars)
    
    243
    +;;;   Defines a form to determine the number of octets needed to
    
    244
    +;;;   encode the given CODE using the external format.  This is
    
    245
    +;;;   essentially the same as CODE-TO-OCTETS, except the encoding is
    
    246
    +;;;   not saved anywhere.  ERROR is the same as in CODE-TO-OCTETS.
    
    247
    +;;;
    
    248
    +;;;   This should return one value: the number of octets needed to
    
    249
    +;;;   encode the given code.
    
    250
    +;;;
    
    231 251
     ;;; Note: external-formats work on code-points, not
    
    232 252
     ;;;   characters, so that the entire 31 bit ISO-10646 range can be
    
    233 253
     ;;;   used internally regardless of the size of a character recognized
    
    ... ... @@ -238,7 +258,7 @@
    238 258
     (defmacro define-external-format (name (&key base min max size (documentation ""))
    
    239 259
     				       (&rest slots)
    
    240 260
     				       &optional octets-to-code code-to-octets
    
    241
    -				       flush-state copy-state)
    
    261
    +				       flush-state copy-state octet-count)
    
    242 262
       (let* ((tmp (gensym))
    
    243 263
     	 (min (or min size 1))
    
    244 264
     	 (max (or max size 6))
    
    ... ... @@ -282,7 +302,17 @@
    282 302
     		     (declare (ignorable ,state))
    
    283 303
     		     (let (,@',slotb
    
    284 304
     			   ,@(loop for var in vars collect `(,var (gensym))))
    
    285
    -		       ,body))))
    
    305
    +		       ,body)))
    
    306
    +		(octet-count ((code state error &rest vars) body)
    
    307
    +		  `(lambda (,',tmp ,state ,error)
    
    308
    +		     (declare (ignorable ,state ,error)
    
    309
    +			      (optimize (ext:inhibit-warnings 3)))
    
    310
    +		     (let (,@',slotb
    
    311
    +			   (,code ',code)
    
    312
    +			   ,@(loop for var in vars collect `(,var (gensym))))
    
    313
    +		       `(let ((,',code (the lisp:codepoint ,,',tmp)))
    
    314
    +			  (declare (ignorable ,',code))
    
    315
    +			  ,,body)))))
    
    286 316
            (%intern-ef (make-external-format ,name
    
    287 317
     		    ,(if base
    
    288 318
     			 `(ef-efx (find-external-format ,(ef-name base)))
    
    ... ... @@ -291,7 +321,8 @@
    291 321
     				    :flush-state ,flush-state
    
    292 322
     			            :copy-state ,copy-state
    
    293 323
     				    :cache (make-array +ef-max+
    
    294
    -							  :initial-element nil)
    
    324
    +						       :initial-element nil)
    
    325
    +				    :octet-count ,octet-count
    
    295 326
     				    :min ,(min min max)
    
    296 327
     				    :max ,(max min max)))
    
    297 328
     		    nil
    
    ... ... @@ -688,7 +719,20 @@ character and illegal outputs are replaced by a question mark.")
    688 719
     				 (intl:gettext "Cannot output codepoint #x~X to ISO8859-1 stream")
    
    689 720
     				 ,code 1))
    
    690 721
     		      #x3F)
    
    691
    -		  ,code))))
    
    722
    +		  ,code)))
    
    723
    +  ()
    
    724
    +  ()
    
    725
    +  (octet-count (code state error)
    
    726
    +    `(if (> ,code 255)
    
    727
    +	 (if ,error
    
    728
    +	     (locally
    
    729
    +		 ;; No warnings about fdefinition
    
    730
    +		 (declare (optimize (ext:inhibit-warnings 3)))
    
    731
    +	       (funcall ,error
    
    732
    +			(intl:gettext "Cannot output codepoint #x~X to ISO8859-1 stream")
    
    733
    +			,code 1))
    
    734
    +	     1)
    
    735
    +	 1)))
    
    692 736
     
    
    693 737
     ;;; OCTETS-TO-CODEPOINT, CODEPOINT-TO-OCTETS  -- Semi-Public
    
    694 738
     ;;;
    
    ... ... @@ -709,6 +753,10 @@ character and illegal outputs are replaced by a question mark.")
    709 753
       (let ((ef (find-external-format external-format)))
    
    710 754
         (funcall (ef-code-to-octets ef) code state output error)))
    
    711 755
     
    
    756
    +(defmacro count-codepoint-octets (external-format code state &optional error)
    
    757
    +  (let ((ef (find-external-format external-format)))
    
    758
    +    (funcall (ef-octet-count ef) code state error)))
    
    759
    +
    
    712 760
     
    
    713 761
     
    
    714 762
     (defvar *ef-base* +ef-max+)
    
    ... ... @@ -878,6 +926,42 @@ character and illegal outputs are replaced by a question mark.")
    878 926
         (when f
    
    879 927
           (funcall f state))))
    
    880 928
     
    
    929
    +(defmacro octet-count (external-format char state &optional error)
    
    930
    +  (let ((nchar (gensym))
    
    931
    +	(nstate (gensym))
    
    932
    +	(count-it (gensym))
    
    933
    +	(ch (gensym)))
    
    934
    +    `(let ((,nchar ,char)
    
    935
    +	   (,nstate ,state))
    
    936
    +       (when (null ,nstate) (setq ,nstate (setf ,state (cons nil nil))))
    
    937
    +       (if (lisp::surrogatep (char-code ,nchar) :high)
    
    938
    +	   (setf (car ,nstate) ,nchar)
    
    939
    +	   (flet ((,count-it (,ch)
    
    940
    +		    (count-codepoint-octets ,external-format ,ch (cdr ,nstate) ,error)))
    
    941
    +	     (if (car ,nstate)
    
    942
    +		 (prog1
    
    943
    +		     (,count-it (if (lisp::surrogatep (char-code ,nchar) :low)
    
    944
    +				    (surrogates-to-codepoint (car ,nstate) ,nchar)
    
    945
    +				    (if ,error
    
    946
    +					(locally
    
    947
    +					    (declare (optimize (ext:inhibit-warnings 3)))
    
    948
    +					  (funcall ,error
    
    949
    +						   (intl:gettext "Cannot convert invalide surrogate #~x~X to character")
    
    950
    +						   ,nchar))
    
    951
    +					+replacement-character-code+)))
    
    952
    +		   (setf (car ,nstate) nil))
    
    953
    +		 ;; A lone trailing (low surrogate gets replaced with
    
    954
    +		 ;; the replacement character.
    
    955
    +		 (,count-it (if (lisp::surrogatep (char-code ,nchar) :low)
    
    956
    +				(if ,error
    
    957
    +				    (locally
    
    958
    +					(declare (optimize (ext:inhibit-warnings 3)))
    
    959
    +				      (funcall ,error
    
    960
    +					       (intl:gettext "Cannot convert lone trailing surrogate #x~X to character")
    
    961
    +					       ,nchar))
    
    962
    +				    +replacement-character-code+)
    
    963
    +				(char-code ,nchar)))))))))
    
    964
    +
    
    881 965
     (def-ef-macro ef-string-to-octets (extfmt lisp::lisp +ef-max+ +ef-so+)
    
    882 966
       `(lambda (string start end buffer buffer-start buffer-end error bufferp
    
    883 967
     	    &aux (ptr buffer-start) (state nil) (last-octet buffer-start))
    
    ... ... @@ -1071,6 +1155,31 @@ character and illegal outputs are replaced by a question mark.")
    1071 1155
           (values (if stringp string (lisp::shrink-vector string pos)) (- pos s-start) last-octet new-state))))
    
    1072 1156
     
    
    1073 1157
     
    
    1158
    +(def-ef-macro ef-string-octet-count (extfmt lisp::lisp +ef-max+ +ef-oc+)
    
    1159
    +  `(lambda (string start end error &aux (total 0) (state nil))
    
    1160
    +     (dotimes (i (- end start) total)
    
    1161
    +       (incf total
    
    1162
    +	     (octet-count ,extfmt (schar string (+ start i)) state error)))))
    
    1163
    +
    
    1164
    +(defun string-octet-count (string &key (start 0) end  (external-format :default) error)
    
    1165
    +  "Compute the number of octets needed to convert String using the
    
    1166
    +  specified External-format.  The string is bound by Start (defaulting
    
    1167
    +  to 0) and End (defaulting to the end of the string)."
    
    1168
    +  (let ((composing-format-p
    
    1169
    +	  ;; Determine is the external format is a composing format
    
    1170
    +	  ;; which we determine by seeing that the name of the format
    
    1171
    +	  ;; is a cons.  Probably not the best way.
    
    1172
    +	  (consp (ef-name (find-external-format external-format)))))
    
    1173
    +    ;; We currently don't know how to get just the number of octets
    
    1174
    +    ;; when a composing external format is used.  As a workaround, use
    
    1175
    +    ;; STRING-TO-OCTETS to find the number of octets.
    
    1176
    +    (if composing-format-p
    
    1177
    +	 (nth-value 1
    
    1178
    +		    (string-to-octets string :start start :end end
    
    1179
    +					     :external-format external-format))
    
    1180
    +	 (lisp::with-array-data ((string string) (start start) (end end))
    
    1181
    +	   (funcall (ef-string-octet-count external-format)
    
    1182
    +		    string start end error)))))
    
    1074 1183
     
    
    1075 1184
     (def-ef-macro ef-encode (extfmt lisp::lisp +ef-max+ +ef-en+)
    
    1076 1185
       `(lambda (string start end result error  &aux (ptr 0) (state nil))
    
    ... ... @@ -1186,10 +1295,11 @@ character and illegal outputs are replaced by a question mark.")
    1186 1295
     	(#.+ef-so+ (%ef-string-to-octets ef))
    
    1187 1296
     	(#.+ef-en+ (%ef-encode ef))
    
    1188 1297
     	(#.+ef-de+ (%ef-decode ef))
    
    1189
    -	(#.+ef-osc+ (%ef-octets-to-string-counted ef))))
    
    1298
    +	(#.+ef-osc+ (%ef-octets-to-string-counted ef))
    
    1299
    +	(#.+ef-oc+ (%ef-octet-count ef))))
    
    1190 1300
         `(setf (aref (ef-cache (find-external-format ,(ef-name ef))) ,slot)
    
    1191 1301
     	 ,(subst (ef-name ef) ef
    
    1192
    -		 (function-lambda-expression (aref (ef-cache ef) slot))))))
    
    1302
    +		 (function-lambda-expression (aref (ef-cache ef) slot)))))))
    
    1193 1303
     
    
    1194 1304
     ;;; Builtin external formats.
    
    1195 1305
     
    
    ... ... @@ -1307,7 +1417,17 @@ replacement character.")
    1307 1417
              ((< ,code #x800) (utf8 ,code 1))
    
    1308 1418
              ((< ,code #x10000) (utf8 ,code 2))
    
    1309 1419
              ((< ,code #x110000) (utf8 ,code 3))
    
    1310
    -         (t (error "How did this happen?  Codepoint U+~X is illegal" ,code))))))
    
    1420
    +         (t (error "How did this happen?  Codepoint U+~X is illegal" ,code)))))
    
    1421
    +  ()
    
    1422
    +  ()
    
    1423
    +  (octet-count (code state error)
    
    1424
    +    `(locally
    
    1425
    +	 (declare (optimize (ext:inhibit-warnings 3)))
    
    1426
    +       (cond ((< ,code #x80) 1)
    
    1427
    +             ((< ,code #x800) 2)
    
    1428
    +             ((< ,code #x10000) 3)
    
    1429
    +             ((< ,code #x110000) 4)
    
    1430
    +             (t (error "How did this happen?  Codepoint U+~X is illegal" ,code))))))
    
    1311 1431
     
    
    1312 1432
     (define-external-format :ascii (:size 1 :documentation
    
    1313 1433
     "US ASCII 7-bit encoding.  Illegal input sequences are replaced with
    
    ... ... @@ -1333,4 +1453,14 @@ replaced with a question mark.")
    1333 1453
     			  (declare (optimize (ext:inhibit-warnings 3)))
    
    1334 1454
     			(funcall ,error "Cannot output codepoint #x~X to ASCII stream" ,code))
    
    1335 1455
     		      #x3F)
    
    1336
    -		  ,code))))
    1456
    +		  ,code)))
    
    1457
    +  ()
    
    1458
    +  ()
    
    1459
    +  (octet-count (code state error)
    
    1460
    +    `(if (> ,code #x7f)
    
    1461
    +	 (if ,error
    
    1462
    +	     (locally
    
    1463
    +		 (declare (optimize (ext:inhibit-warnings 3)))
    
    1464
    +	       (funcall ,error "Cannot output codepoint #x~X to ASCII stream" ,code))
    
    1465
    +	     1)
    
    1466
    +	 1)))

  • src/code/unix.lisp
    ... ... @@ -1736,228 +1736,6 @@
    1736 1736
     	  (t
    
    1737 1737
     	   (subseq dst 0 dst-len)))))
    
    1738 1738
     
    
    1739
    -;;;; Errno stuff.
    
    1740
    -
    
    1741
    -(eval-when (compile eval)
    
    1742
    -
    
    1743
    -(defparameter *compiler-unix-errors* nil)
    
    1744
    -
    
    1745
    -(defmacro def-unix-error (name number &optional description)
    
    1746
    -  "Define a constant named Name corresponding to the Unix errno value
    
    1747
    -  Number.  A description of the errno is optional in Description."
    
    1748
    -  `(progn
    
    1749
    -     (eval-when (compile eval)
    
    1750
    -       (push (cons ,number ,description) *compiler-unix-errors*))
    
    1751
    -     (defconstant ,name ,number ,description)
    
    1752
    -     (export ',name)))
    
    1753
    -
    
    1754
    -#-linux
    
    1755
    -(defmacro emit-unix-errors ()
    
    1756
    -  (let* ((max (apply #'max (mapcar #'car *compiler-unix-errors*)))
    
    1757
    -	 (array (make-array (1+ max) :initial-element nil)))
    
    1758
    -    (dolist (error *compiler-unix-errors*)
    
    1759
    -      (setf (svref array (car error)) (cdr error)))
    
    1760
    -    `(progn
    
    1761
    -       (defvar *unix-errors* ',array)
    
    1762
    -       (declaim (simple-vector *unix-errors*)))))
    
    1763
    -
    
    1764
    -) ;eval-when
    
    1765
    -
    
    1766
    -;;; For Linux, the def-unix-error forms are auto-generated and are not
    
    1767
    -;;; defined here.
    
    1768
    -#-linux
    
    1769
    -(progn
    
    1770
    -;;; 
    
    1771
    -;;; From <errno.h>
    
    1772
    -;;; 
    
    1773
    -(def-unix-error ESUCCESS 0 _N"Successful")
    
    1774
    -(def-unix-error EPERM 1 _N"Operation not permitted")
    
    1775
    -(def-unix-error ENOENT 2 _N"No such file or directory")
    
    1776
    -(def-unix-error ESRCH 3 _N"No such process")
    
    1777
    -(def-unix-error EINTR 4 _N"Interrupted system call")
    
    1778
    -(def-unix-error EIO 5 _N"I/O error")
    
    1779
    -(def-unix-error ENXIO 6 _N"Device not configured")
    
    1780
    -(def-unix-error E2BIG 7 _N"Arg list too long")
    
    1781
    -(def-unix-error ENOEXEC 8 _N"Exec format error")
    
    1782
    -(def-unix-error EBADF 9 _N"Bad file descriptor")
    
    1783
    -(def-unix-error ECHILD 10 _N"No child process")
    
    1784
    -#+bsd(def-unix-error EDEADLK 11 _N"Resource deadlock avoided")
    
    1785
    -#-bsd(def-unix-error EAGAIN 11 #-linux _N"No more processes" #+linux _N"Try again")
    
    1786
    -(def-unix-error ENOMEM 12 _N"Out of memory")
    
    1787
    -(def-unix-error EACCES 13 _N"Permission denied")
    
    1788
    -(def-unix-error EFAULT 14 _N"Bad address")
    
    1789
    -(def-unix-error ENOTBLK 15 _N"Block device required")
    
    1790
    -(def-unix-error EBUSY 16 _N"Device or resource busy")
    
    1791
    -(def-unix-error EEXIST 17 _N"File exists")
    
    1792
    -(def-unix-error EXDEV 18 _N"Cross-device link")
    
    1793
    -(def-unix-error ENODEV 19 _N"No such device")
    
    1794
    -(def-unix-error ENOTDIR 20 _N"Not a director")
    
    1795
    -(def-unix-error EISDIR 21 _N"Is a directory")
    
    1796
    -(def-unix-error EINVAL 22 _N"Invalid argument")
    
    1797
    -(def-unix-error ENFILE 23 _N"File table overflow")
    
    1798
    -(def-unix-error EMFILE 24 _N"Too many open files")
    
    1799
    -(def-unix-error ENOTTY 25 _N"Inappropriate ioctl for device")
    
    1800
    -(def-unix-error ETXTBSY 26 _N"Text file busy")
    
    1801
    -(def-unix-error EFBIG 27 _N"File too large")
    
    1802
    -(def-unix-error ENOSPC 28 _N"No space left on device")
    
    1803
    -(def-unix-error ESPIPE 29 _N"Illegal seek")
    
    1804
    -(def-unix-error EROFS 30 _N"Read-only file system")
    
    1805
    -(def-unix-error EMLINK 31 _N"Too many links")
    
    1806
    -(def-unix-error EPIPE 32 _N"Broken pipe")
    
    1807
    -;;; 
    
    1808
    -;;; Math
    
    1809
    -(def-unix-error EDOM 33 _N"Numerical argument out of domain")
    
    1810
    -(def-unix-error ERANGE 34 #-linux _N"Result too large" #+linux _N"Math result not representable")
    
    1811
    -;;; 
    
    1812
    -#-(or linux svr4)
    
    1813
    -(progn
    
    1814
    -;;; non-blocking and interrupt i/o
    
    1815
    -(def-unix-error EWOULDBLOCK 35 _N"Operation would block")
    
    1816
    -#-bsd(def-unix-error EDEADLK 35 _N"Operation would block") ; Ditto
    
    1817
    -#+bsd(def-unix-error EAGAIN 35 _N"Resource temporarily unavailable")
    
    1818
    -(def-unix-error EINPROGRESS 36 _N"Operation now in progress")
    
    1819
    -(def-unix-error EALREADY 37 _N"Operation already in progress")
    
    1820
    -;;;
    
    1821
    -;;; ipc/network software
    
    1822
    -(def-unix-error ENOTSOCK 38 _N"Socket operation on non-socket")
    
    1823
    -(def-unix-error EDESTADDRREQ 39 _N"Destination address required")
    
    1824
    -(def-unix-error EMSGSIZE 40 _N"Message too long")
    
    1825
    -(def-unix-error EPROTOTYPE 41 _N"Protocol wrong type for socket")
    
    1826
    -(def-unix-error ENOPROTOOPT 42 _N"Protocol not available")
    
    1827
    -(def-unix-error EPROTONOSUPPORT 43 _N"Protocol not supported")
    
    1828
    -(def-unix-error ESOCKTNOSUPPORT 44 _N"Socket type not supported")
    
    1829
    -(def-unix-error EOPNOTSUPP 45 _N"Operation not supported on socket")
    
    1830
    -(def-unix-error EPFNOSUPPORT 46 _N"Protocol family not supported")
    
    1831
    -(def-unix-error EAFNOSUPPORT 47 _N"Address family not supported by protocol family")
    
    1832
    -(def-unix-error EADDRINUSE 48 _N"Address already in use")
    
    1833
    -(def-unix-error EADDRNOTAVAIL 49 _N"Can't assign requested address")
    
    1834
    -;;;
    
    1835
    -;;; operational errors
    
    1836
    -(def-unix-error ENETDOWN 50 _N"Network is down")
    
    1837
    -(def-unix-error ENETUNREACH 51 _N"Network is unreachable")
    
    1838
    -(def-unix-error ENETRESET 52 _N"Network dropped connection on reset")
    
    1839
    -(def-unix-error ECONNABORTED 53 _N"Software caused connection abort")
    
    1840
    -(def-unix-error ECONNRESET 54 _N"Connection reset by peer")
    
    1841
    -(def-unix-error ENOBUFS 55 _N"No buffer space available")
    
    1842
    -(def-unix-error EISCONN 56 _N"Socket is already connected")
    
    1843
    -(def-unix-error ENOTCONN 57 _N"Socket is not connected")
    
    1844
    -(def-unix-error ESHUTDOWN 58 _N"Can't send after socket shutdown")
    
    1845
    -(def-unix-error ETOOMANYREFS 59 _N"Too many references: can't splice")
    
    1846
    -(def-unix-error ETIMEDOUT 60 _N"Connection timed out")
    
    1847
    -(def-unix-error ECONNREFUSED 61 _N"Connection refused")
    
    1848
    -;;; 
    
    1849
    -(def-unix-error ELOOP 62 _N"Too many levels of symbolic links")
    
    1850
    -(def-unix-error ENAMETOOLONG 63 _N"File name too long")
    
    1851
    -;;; 
    
    1852
    -(def-unix-error EHOSTDOWN 64 _N"Host is down")
    
    1853
    -(def-unix-error EHOSTUNREACH 65 _N"No route to host")
    
    1854
    -(def-unix-error ENOTEMPTY 66 _N"Directory not empty")
    
    1855
    -;;; 
    
    1856
    -;;; quotas & resource 
    
    1857
    -(def-unix-error EPROCLIM 67 _N"Too many processes")
    
    1858
    -(def-unix-error EUSERS 68 _N"Too many users")
    
    1859
    -(def-unix-error EDQUOT 69 _N"Disc quota exceeded")
    
    1860
    -;;;
    
    1861
    -;;; CMU RFS
    
    1862
    -(def-unix-error ELOCAL 126 _N"namei should continue locally")
    
    1863
    -(def-unix-error EREMOTE 127 _N"namei was handled remotely")
    
    1864
    -;;;
    
    1865
    -;;; VICE
    
    1866
    -(def-unix-error EVICEERR 70 _N"Remote file system error _N")
    
    1867
    -(def-unix-error EVICEOP 71 _N"syscall was handled by Vice")
    
    1868
    -)
    
    1869
    -#+svr4
    
    1870
    -(progn
    
    1871
    -(def-unix-error ENOMSG 35 _N"No message of desired type")
    
    1872
    -(def-unix-error EIDRM 36 _N"Identifier removed")
    
    1873
    -(def-unix-error ECHRNG 37 _N"Channel number out of range")
    
    1874
    -(def-unix-error EL2NSYNC 38 _N"Level 2 not synchronized")
    
    1875
    -(def-unix-error EL3HLT 39 _N"Level 3 halted")
    
    1876
    -(def-unix-error EL3RST 40 _N"Level 3 reset")
    
    1877
    -(def-unix-error ELNRNG 41 _N"Link number out of range")
    
    1878
    -(def-unix-error EUNATCH 42 _N"Protocol driver not attached")
    
    1879
    -(def-unix-error ENOCSI 43 _N"No CSI structure available")
    
    1880
    -(def-unix-error EL2HLT 44 _N"Level 2 halted")
    
    1881
    -(def-unix-error EDEADLK 45 _N"Deadlock situation detected/avoided")
    
    1882
    -(def-unix-error ENOLCK 46 _N"No record locks available")
    
    1883
    -(def-unix-error ECANCELED 47 _N"Error 47")
    
    1884
    -(def-unix-error ENOTSUP 48 _N"Error 48")
    
    1885
    -(def-unix-error EBADE 50 _N"Bad exchange descriptor")
    
    1886
    -(def-unix-error EBADR 51 _N"Bad request descriptor")
    
    1887
    -(def-unix-error EXFULL 52 _N"Message tables full")
    
    1888
    -(def-unix-error ENOANO 53 _N"Anode table overflow")
    
    1889
    -(def-unix-error EBADRQC 54 _N"Bad request code")
    
    1890
    -(def-unix-error EBADSLT 55 _N"Invalid slot")
    
    1891
    -(def-unix-error EDEADLOCK 56 _N"File locking deadlock")
    
    1892
    -(def-unix-error EBFONT 57 _N"Bad font file format")
    
    1893
    -(def-unix-error ENOSTR 60 _N"Not a stream device")
    
    1894
    -(def-unix-error ENODATA 61 _N"No data available")
    
    1895
    -(def-unix-error ETIME 62 _N"Timer expired")
    
    1896
    -(def-unix-error ENOSR 63 _N"Out of stream resources")
    
    1897
    -(def-unix-error ENONET 64 _N"Machine is not on the network")
    
    1898
    -(def-unix-error ENOPKG 65 _N"Package not installed")
    
    1899
    -(def-unix-error EREMOTE 66 _N"Object is remote")
    
    1900
    -(def-unix-error ENOLINK 67 _N"Link has been severed")
    
    1901
    -(def-unix-error EADV 68 _N"Advertise error")
    
    1902
    -(def-unix-error ESRMNT 69 _N"Srmount error")
    
    1903
    -(def-unix-error ECOMM 70 _N"Communication error on send")
    
    1904
    -(def-unix-error EPROTO 71 _N"Protocol error")
    
    1905
    -(def-unix-error EMULTIHOP 74 _N"Multihop attempted")
    
    1906
    -(def-unix-error EBADMSG 77 _N"Not a data message")
    
    1907
    -(def-unix-error ENAMETOOLONG 78 _N"File name too long")
    
    1908
    -(def-unix-error EOVERFLOW 79 _N"Value too large for defined data type")
    
    1909
    -(def-unix-error ENOTUNIQ 80 _N"Name not unique on network")
    
    1910
    -(def-unix-error EBADFD 81 _N"File descriptor in bad state")
    
    1911
    -(def-unix-error EREMCHG 82 _N"Remote address changed")
    
    1912
    -(def-unix-error ELIBACC 83 _N"Can not access a needed shared library")
    
    1913
    -(def-unix-error ELIBBAD 84 _N"Accessing a corrupted shared library")
    
    1914
    -(def-unix-error ELIBSCN 85 _N".lib section in a.out corrupted")
    
    1915
    -(def-unix-error ELIBMAX 86 _N"Attempting to link in more shared libraries than system limit")
    
    1916
    -(def-unix-error ELIBEXEC 87 _N"Can not exec a shared library directly")
    
    1917
    -(def-unix-error EILSEQ 88 _N"Error 88")
    
    1918
    -(def-unix-error ENOSYS 89 _N"Operation not applicable")
    
    1919
    -(def-unix-error ELOOP 90 _N"Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS")
    
    1920
    -(def-unix-error ERESTART 91 _N"Error 91")
    
    1921
    -(def-unix-error ESTRPIPE 92 _N"Error 92")
    
    1922
    -(def-unix-error ENOTEMPTY 93 _N"Directory not empty")
    
    1923
    -(def-unix-error EUSERS 94 _N"Too many users")
    
    1924
    -(def-unix-error ENOTSOCK 95 _N"Socket operation on non-socket")
    
    1925
    -(def-unix-error EDESTADDRREQ 96 _N"Destination address required")
    
    1926
    -(def-unix-error EMSGSIZE 97 _N"Message too long")
    
    1927
    -(def-unix-error EPROTOTYPE 98 _N"Protocol wrong type for socket")
    
    1928
    -(def-unix-error ENOPROTOOPT 99 _N"Option not supported by protocol")
    
    1929
    -(def-unix-error EPROTONOSUPPORT 120 _N"Protocol not supported")
    
    1930
    -(def-unix-error ESOCKTNOSUPPORT 121 _N"Socket type not supported")
    
    1931
    -(def-unix-error EOPNOTSUPP 122 _N"Operation not supported on transport endpoint")
    
    1932
    -(def-unix-error EPFNOSUPPORT 123 _N"Protocol family not supported")
    
    1933
    -(def-unix-error EAFNOSUPPORT 124 _N"Address family not supported by protocol family")
    
    1934
    -(def-unix-error EADDRINUSE 125 _N"Address already in use")
    
    1935
    -(def-unix-error EADDRNOTAVAIL 126 _N"Cannot assign requested address")
    
    1936
    -(def-unix-error ENETDOWN 127 _N"Network is down")
    
    1937
    -(def-unix-error ENETUNREACH 128 _N"Network is unreachable")
    
    1938
    -(def-unix-error ENETRESET 129 _N"Network dropped connection because of reset")
    
    1939
    -(def-unix-error ECONNABORTED 130 _N"Software caused connection abort")
    
    1940
    -(def-unix-error ECONNRESET 131 _N"Connection reset by peer")
    
    1941
    -(def-unix-error ENOBUFS 132 _N"No buffer space available")
    
    1942
    -(def-unix-error EISCONN 133 _N"Transport endpoint is already connected")
    
    1943
    -(def-unix-error ENOTCONN 134 _N"Transport endpoint is not connected")
    
    1944
    -(def-unix-error ESHUTDOWN 143 _N"Cannot send after socket shutdown")
    
    1945
    -(def-unix-error ETOOMANYREFS 144 _N"Too many references: cannot splice")
    
    1946
    -(def-unix-error ETIMEDOUT 145 _N"Connection timed out")
    
    1947
    -(def-unix-error ECONNREFUSED 146 _N"Connection refused")
    
    1948
    -(def-unix-error EHOSTDOWN 147 _N"Host is down")
    
    1949
    -(def-unix-error EHOSTUNREACH 148 _N"No route to host")
    
    1950
    -(def-unix-error EWOULDBLOCK 11 _N"Resource temporarily unavailable")
    
    1951
    -(def-unix-error EALREADY 149 _N"Operation already in progress")
    
    1952
    -(def-unix-error EINPROGRESS 150 _N"Operation now in progress")
    
    1953
    -(def-unix-error ESTALE 151 _N"Stale NFS file handle")
    
    1954
    -)
    
    1955
    -
    
    1956
    -;;;
    
    1957
    -;;; And now for something completely different ...
    
    1958
    -(emit-unix-errors)
    
    1959
    -)
    
    1960
    -
    
    1961 1739
     (def-alien-routine ("os_get_errno" unix-get-errno) int)
    
    1962 1740
     (def-alien-routine ("os_set_errno" unix-set-errno) int (newvalue int))
    
    1963 1741
     (defun unix-errno () (unix-get-errno))
    

  • src/general-info/release-21f.md
    ... ... @@ -30,6 +30,7 @@ public domain.
    30 30
       * ANSI compliance fixes:
    
    31 31
       * Bug fixes:
    
    32 32
       * Gitlab tickets:
    
    33
    +    * ~~#135~~ `(unix-namestring ".")` returns "" instead of "."
    
    33 34
         * ~~#154~~ piglatin translation does not work anymore
    
    34 35
         * ~~#171~~ Readably print `(make-pathname :name :unspecfic)`
    
    35 36
         * ~~#180~~ Move `get-page-size` to C
    
    ... ... @@ -52,6 +53,7 @@ public domain.
    52 53
           available for Hemlock
    
    53 54
         * ~~#261~~ Remove `get-system-info` from "bsd-os.lisp"
    
    54 55
         * ~~#268~~ Can't clone ansi-test repo on Mac OS CI box
    
    56
    +    * ~~#262~~ [arch_skip_inst invalid code -55]
    
    55 57
         * ~~#265~~ CI for mac os is broken
    
    56 58
         * ~~#266~~ Support "~user" in namestrings
    
    57 59
         * ~~#269~~ Add function to get user's home directory
    
    ... ... @@ -77,17 +79,42 @@ public domain.
    77 79
         * ~~#299~~ Enable xoroshiro assembly routine
    
    78 80
         * ~~#303~~ Variable `*assert-not-standard-readtable*` defined but
    
    79 81
           not used.
    
    82
    +    * ~~#309~~ obj_run_linker does unnecessary allocations
    
    80 83
         * ~~#312~~ Compiler error building motif server on Fedora 40
    
    81 84
         * ~~#314~~ tanh incorrect for large args
    
    82 85
         * ~~#316~~ Support roundtrip character casing
    
    83 86
         * ~~#320~~ Motif variant not defaulted for `x86_linux_clang` config
    
    84 87
         * ~~#321~~ Rename Motif Config.x86 to Config.linux
    
    85 88
         * ~~#323~~ Make string casing functions compliant
    
    89
    +    * ~~#327~~ Fix up weird CLRLF and LF line terminators in the same file
    
    86 90
         * ~~#329~~ Fix compiler warnings in os.lisp
    
    87 91
         * ~~#330~~ Fix typos in unicode.lisp
    
    88 92
         * ~~#333~~ `load` doesn't accept generalized boolean for
    
    89 93
           `:if-does-not-exist` arg
    
    94
    +    * ~~#338~~ Solaris/x86 build
    
    95
    +    * ~~#336~~ Clean up some compiler notes
    
    96
    +    * ~~#337~~ Cross-compile from x86 (linux) to x86 fails
    
    97
    +    * ~~#339~~ Solaris/x86 `nl_langinfo` returns "646"
    
    98
    +    * ~~#340~~ Use `+ascii-limit+` instead of `#x7f` in srctran.lisp
    
    99
    +      for consistency
    
    100
    +    * ~~#341~~ Update version feature in cross-compile script
    
    101
    +    * ~~#342~~ Add CI job to run gcc static analyer
    
    102
    +    * ~~#348~~ Solaris/x86: u_int64_t vs uint64_t
    
    103
    +    * ~~#347~~ Solaris/x86: Update cross-compile script
    
    104
    +    * ~~#350~~ Export warnings on Solaris
    
    105
    +    * ~~#351~~ Solaris does not recognize `-E` option for grep
    
    106
    +    * ~~#352~~ Always use bzip2 compression for tarballs
    
    107
    +    * ~~#353~~ Automatically use gtar on Solaris when making a distribution
    
    108
    +    * ~~#354~~ Check that executables can be created in CI
    
    109
    +    * ~~#356~~ Return value from `vm::x87-floating-point-modes` should
    
    110
    +      have status word in low part of result
    
    111
    +    * ~~#357~~ Solaris needs limits.h to get `PATH_MAX` in elf.c
    
    112
    +    * ~~#360~~ Adding site-init file
    
    90 113
         * ~~#361~~ Add herald item to mention where to report issues
    
    114
    +    * ~~#362~~ Simplify "library:" search-list
    
    115
    +    * ~~#364~~ Add interface to `mkdtemp` and `mkstemp`
    
    116
    +    * ~~#367~~ Add stream:string-count-octets to count octets in a string
    
    117
    +    * ~~#369~~ Improve docstring for `unix::unix-setlocale`
    
    91 118
       * Other changes:
    
    92 119
       * Improvements to the PCL implementation of CLOS:
    
    93 120
       * Changes to building procedure:
    

  • src/i18n/locale/cmucl-unix.pot
    ... ... @@ -15,1267 +15,1173 @@ msgstr ""
    15 15
     "Content-Type: text/plain; charset=UTF-8\n"
    
    16 16
     "Content-Transfer-Encoding: 8bit\n"
    
    17 17
     
    
    18
    -#: src/code/unix.lisp
    
    19
    -msgid ""
    
    20
    -"The encoding to use for converting a namestring to a string that can\n"
    
    21
    -"  be used by the operations system.  It must be a valid\n"
    
    22
    -"  external-format name or :NULL.  :NULL means the string\n"
    
    23
    -"  is passed as is to the operating system.  The operating system will\n"
    
    24
    -"  get the low 8 bits of each UTF-16 code unit of the string."
    
    25
    -msgstr ""
    
    26
    -
    
    27
    -#: src/code/unix.lisp
    
    28
    -msgid "Syscall ~A failed: ~A"
    
    29
    -msgstr ""
    
    30
    -
    
    31
    -#: src/code/unix.lisp
    
    32
    -msgid "Test for read permission"
    
    33
    -msgstr ""
    
    34
    -
    
    35
    -#: src/code/unix.lisp
    
    36
    -msgid "Class not yet defined: ~S"
    
    37
    -msgstr ""
    
    38
    -
    
    39
    -#: src/code/unix.lisp
    
    40
    -msgid "Test for write permission"
    
    41
    -msgstr ""
    
    42
    -
    
    43
    -#: src/code/unix.lisp
    
    44
    -msgid "Test for execute permission"
    
    45
    -msgstr ""
    
    46
    -
    
    47
    -#: src/code/unix.lisp
    
    48
    -msgid "Test for presence of file"
    
    49
    -msgstr ""
    
    50
    -
    
    51
    -#: src/code/unix.lisp
    
    52
    -msgid ""
    
    53
    -"Given a file path (a string) and one of four constant modes,\n"
    
    54
    -"   unix-access returns T if the file is accessible with that\n"
    
    55
    -"   mode and NIL if not.  It also returns an errno value with\n"
    
    56
    -"   NIL which determines why the file was not accessible.\n"
    
    57
    -"\n"
    
    58
    -"   The access modes are:\n"
    
    59
    -"	r_ok     Read permission.\n"
    
    60
    -"	w_ok     Write permission.\n"
    
    61
    -"	x_ok     Execute permission.\n"
    
    62
    -"	f_ok     Presence of file."
    
    63
    -msgstr ""
    
    64
    -
    
    65
    -#: src/code/unix.lisp
    
    18
    +#: src/code/unix-errno.lisp
    
    66 19
     msgid ""
    
    67
    -"Given a file path string, unix-chdir changes the current working \n"
    
    68
    -"   directory to the one specified."
    
    69
    -msgstr ""
    
    70
    -
    
    71
    -#: src/code/unix.lisp
    
    72
    -msgid "Set user ID on execution"
    
    73
    -msgstr ""
    
    74
    -
    
    75
    -#: src/code/unix.lisp
    
    76
    -msgid "Set group ID on execution"
    
    77
    -msgstr ""
    
    78
    -
    
    79
    -#: src/code/unix.lisp
    
    80
    -msgid "Save text image after execution"
    
    81
    -msgstr ""
    
    82
    -
    
    83
    -#: src/code/unix.lisp
    
    84
    -msgid "Read by owner"
    
    85
    -msgstr ""
    
    86
    -
    
    87
    -#: src/code/unix.lisp
    
    88
    -msgid "Write by owner"
    
    89
    -msgstr ""
    
    90
    -
    
    91
    -#: src/code/unix.lisp
    
    92
    -msgid "Execute (search directory) by owner"
    
    93
    -msgstr ""
    
    94
    -
    
    95
    -#: src/code/unix.lisp
    
    96
    -msgid "Read by group"
    
    20
    +"Define a constant named Name corresponding to the Unix errno value\n"
    
    21
    +"  Number.  A description of the errno is optional in Description."
    
    97 22
     msgstr ""
    
    98 23
     
    
    99
    -#: src/code/unix.lisp
    
    100
    -msgid "Write by group"
    
    101
    -msgstr ""
    
    102
    -
    
    103
    -#: src/code/unix.lisp
    
    104
    -msgid "Execute (search directory) by group"
    
    105
    -msgstr ""
    
    106
    -
    
    107
    -#: src/code/unix.lisp
    
    108
    -msgid "Read by others"
    
    109
    -msgstr ""
    
    110
    -
    
    111
    -#: src/code/unix.lisp
    
    112
    -msgid "Write by others"
    
    113
    -msgstr ""
    
    114
    -
    
    115
    -#: src/code/unix.lisp
    
    116
    -msgid "Execute (search directory) by others"
    
    117
    -msgstr ""
    
    118
    -
    
    119
    -#: src/code/unix.lisp
    
    120
    -msgid ""
    
    121
    -"Given a file path string and a constant mode, unix-chmod changes the\n"
    
    122
    -"   permission mode for that file to the one specified. The new mode\n"
    
    123
    -"   can be created by logically OR'ing the following:\n"
    
    124
    -"\n"
    
    125
    -"      setuidexec        Set user ID on execution.\n"
    
    126
    -"      setgidexec        Set group ID on execution.\n"
    
    127
    -"      savetext          Save text image after execution.\n"
    
    128
    -"      readown           Read by owner.\n"
    
    129
    -"      writeown          Write by owner.\n"
    
    130
    -"      execown           Execute (search directory) by owner.\n"
    
    131
    -"      readgrp           Read by group.\n"
    
    132
    -"      writegrp          Write by group.\n"
    
    133
    -"      execgrp           Execute (search directory) by group.\n"
    
    134
    -"      readoth           Read by others.\n"
    
    135
    -"      writeoth          Write by others.\n"
    
    136
    -"      execoth           Execute (search directory) by others.\n"
    
    137
    -"  \n"
    
    138
    -"  Thus #o444 and (logior unix:readown unix:readgrp unix:readoth)\n"
    
    139
    -"  are equivalent for 'mode.  The octal-base is familar to Unix users.\n"
    
    140
    -"\n"
    
    141
    -"  It returns T on successfully completion; NIL and an error number\n"
    
    142
    -"  otherwise."
    
    143
    -msgstr ""
    
    144
    -
    
    145
    -#: src/code/unix.lisp
    
    146
    -msgid ""
    
    147
    -"Given an integer file descriptor and a mode (the same as those\n"
    
    148
    -"   used for unix-chmod), unix-fchmod changes the permission mode\n"
    
    149
    -"   for that file to the one specified. T is returned if the call\n"
    
    150
    -"   was successful."
    
    151
    -msgstr ""
    
    152
    -
    
    153
    -#: src/code/unix.lisp
    
    154
    -msgid "set the file pointer"
    
    155
    -msgstr ""
    
    156
    -
    
    157
    -#: src/code/unix.lisp
    
    158
    -msgid "increment the file pointer"
    
    24
    +#: src/code/unix-errno.lisp
    
    25
    +msgid "Successful"
    
    159 26
     msgstr ""
    
    160 27
     
    
    161
    -#: src/code/unix.lisp
    
    162
    -msgid "extend the file size"
    
    28
    +#: src/code/unix-errno.lisp
    
    29
    +msgid "Operation not permitted"
    
    163 30
     msgstr ""
    
    164 31
     
    
    165
    -#: src/code/unix.lisp
    
    166
    -msgid ""
    
    167
    -"Unix-lseek accepts a file descriptor and moves the file pointer ahead\n"
    
    168
    -"   a certain offset for that file.  Whence can be any of the following:\n"
    
    169
    -"\n"
    
    170
    -"   l_set        Set the file pointer.\n"
    
    171
    -"   l_incr       Increment the file pointer.\n"
    
    172
    -"   l_xtnd       Extend the file size.\n"
    
    173
    -"  _N"
    
    32
    +#: src/code/unix-errno.lisp
    
    33
    +msgid "No such file or directory"
    
    174 34
     msgstr ""
    
    175 35
     
    
    176
    -#: src/code/unix.lisp
    
    177
    -msgid ""
    
    178
    -"UNIX-LSEEK accepts a file descriptor and moves the file pointer ahead\n"
    
    179
    -"   a certain OFFSET for that file.  WHENCE can be any of the following:\n"
    
    180
    -"\n"
    
    181
    -"   l_set        Set the file pointer.\n"
    
    182
    -"   l_incr       Increment the file pointer.\n"
    
    183
    -"   l_xtnd       Extend the file size.\n"
    
    184
    -"  "
    
    36
    +#: src/code/unix-errno.lisp
    
    37
    +msgid "No such process"
    
    185 38
     msgstr ""
    
    186 39
     
    
    187
    -#: src/code/unix.lisp
    
    188
    -msgid ""
    
    189
    -"Unix-mkdir creates a new directory with the specified name and mode.\n"
    
    190
    -"   (Same as those for unix-chmod.)  It returns T upon success, otherwise\n"
    
    191
    -"   NIL and an error number."
    
    40
    +#: src/code/unix-errno.lisp
    
    41
    +msgid "Interrupted system call"
    
    192 42
     msgstr ""
    
    193 43
     
    
    194
    -#: src/code/unix.lisp
    
    195
    -msgid ""
    
    196
    -"Unix-unlink removes the directory entry for the named file.\n"
    
    197
    -"   NIL and an error code is returned if the call fails."
    
    44
    +#: src/code/unix-errno.lisp
    
    45
    +msgid "I/O error"
    
    198 46
     msgstr ""
    
    199 47
     
    
    200
    -#: src/code/unix.lisp
    
    201
    -msgid "Read-only flag."
    
    48
    +#: src/code/unix-errno.lisp
    
    49
    +msgid "Device not configured"
    
    202 50
     msgstr ""
    
    203 51
     
    
    204
    -#: src/code/unix.lisp
    
    205
    -msgid "Write-only flag."
    
    52
    +#: src/code/unix-errno.lisp
    
    53
    +msgid "Arg list too long"
    
    206 54
     msgstr ""
    
    207 55
     
    
    208
    -#: src/code/unix.lisp
    
    209
    -msgid "Read-write flag."
    
    56
    +#: src/code/unix-errno.lisp
    
    57
    +msgid "Exec format error"
    
    210 58
     msgstr ""
    
    211 59
     
    
    212
    -#: src/code/unix.lisp
    
    213
    -msgid "Non-blocking I/O"
    
    60
    +#: src/code/unix-errno.lisp
    
    61
    +msgid "Bad file descriptor"
    
    214 62
     msgstr ""
    
    215 63
     
    
    216
    -#: src/code/unix.lisp
    
    217
    -msgid "Append flag."
    
    64
    +#: src/code/unix-errno.lisp
    
    65
    +msgid "No child process"
    
    218 66
     msgstr ""
    
    219 67
     
    
    220
    -#: src/code/unix.lisp
    
    221
    -msgid "Create if nonexistant flag."
    
    68
    +#: src/code/unix-errno.lisp
    
    69
    +msgid "Resource deadlock avoided"
    
    222 70
     msgstr ""
    
    223 71
     
    
    224
    -#: src/code/unix.lisp
    
    225
    -msgid "Truncate flag."
    
    72
    +#: src/code/unix-errno.lisp
    
    73
    +msgid "No more processes"
    
    226 74
     msgstr ""
    
    227 75
     
    
    228
    -#: src/code/unix.lisp
    
    229
    -msgid "Error if already exists."
    
    76
    +#: src/code/unix-errno.lisp
    
    77
    +msgid "Try again"
    
    230 78
     msgstr ""
    
    231 79
     
    
    232
    -#: src/code/unix.lisp
    
    233
    -msgid "Don't assign controlling tty"
    
    80
    +#: src/code/unix-errno.lisp
    
    81
    +msgid "Out of memory"
    
    234 82
     msgstr ""
    
    235 83
     
    
    236
    -#: src/code/unix.lisp
    
    237
    -msgid "Non-blocking mode"
    
    84
    +#: src/code/unix-errno.lisp
    
    85
    +msgid "Permission denied"
    
    238 86
     msgstr ""
    
    239 87
     
    
    240
    -#: src/code/unix.lisp
    
    241
    -msgid "Synchronous writes (on ext2)"
    
    88
    +#: src/code/unix-errno.lisp
    
    89
    +msgid "Bad address"
    
    242 90
     msgstr ""
    
    243 91
     
    
    244
    -#: src/code/unix.lisp
    
    245
    -msgid "Asynchronous I/O"
    
    92
    +#: src/code/unix-errno.lisp
    
    93
    +msgid "Block device required"
    
    246 94
     msgstr ""
    
    247 95
     
    
    248
    -#: src/code/unix.lisp
    
    249
    -msgid ""
    
    250
    -"Unix-open opens the file whose pathname is specified by path\n"
    
    251
    -"   for reading and/or writing as specified by the flags argument.\n"
    
    252
    -"   The flags argument can be:\n"
    
    253
    -"\n"
    
    254
    -"     o_rdonly        Read-only flag.\n"
    
    255
    -"     o_wronly        Write-only flag.\n"
    
    256
    -"     o_rdwr          Read-and-write flag.\n"
    
    257
    -"     o_append        Append flag.\n"
    
    258
    -"     o_creat         Create-if-nonexistant flag.\n"
    
    259
    -"     o_trunc         Truncate-to-size-0 flag.\n"
    
    260
    -"\n"
    
    261
    -"   If the o_creat flag is specified, then the file is created with\n"
    
    262
    -"   a permission of argument mode if the file doesn't exist.  An\n"
    
    263
    -"   integer file descriptor is returned by unix-open."
    
    96
    +#: src/code/unix-errno.lisp
    
    97
    +msgid "Device or resource busy"
    
    264 98
     msgstr ""
    
    265 99
     
    
    266
    -#: src/code/unix.lisp
    
    267
    -msgid ""
    
    268
    -"Unix-close takes an integer file descriptor as an argument and\n"
    
    269
    -"   closes the file associated with it.  T is returned upon successful\n"
    
    270
    -"   completion, otherwise NIL and an error number."
    
    100
    +#: src/code/unix-errno.lisp
    
    101
    +msgid "File exists"
    
    271 102
     msgstr ""
    
    272 103
     
    
    273
    -#: src/code/unix.lisp
    
    274
    -msgid ""
    
    275
    -"Unix-creat accepts a file name and a mode (same as those for\n"
    
    276
    -"   unix-chmod) and creates a file by that name with the specified\n"
    
    277
    -"   permission mode.  It returns a file descriptor on success,\n"
    
    278
    -"   or NIL and an error  number otherwise.\n"
    
    279
    -"\n"
    
    280
    -"   This interface is made obsolete by UNIX-OPEN."
    
    104
    +#: src/code/unix-errno.lisp
    
    105
    +msgid "Cross-device link"
    
    281 106
     msgstr ""
    
    282 107
     
    
    283
    -#: src/code/unix.lisp
    
    284
    -msgid ""
    
    285
    -"Unix-dup duplicates an existing file descriptor (given as the\n"
    
    286
    -"   argument) and return it.  If FD is not a valid file descriptor, NIL\n"
    
    287
    -"   and an error number are returned."
    
    108
    +#: src/code/unix-errno.lisp
    
    109
    +msgid "No such device"
    
    288 110
     msgstr ""
    
    289 111
     
    
    290
    -#: src/code/unix.lisp
    
    291
    -msgid ""
    
    292
    -"Unix-dup2 duplicates an existing file descriptor just as unix-dup\n"
    
    293
    -"   does only the new value of the duplicate descriptor may be requested\n"
    
    294
    -"   through the second argument.  If a file already exists with the\n"
    
    295
    -"   requested descriptor number, it will be closed and the number\n"
    
    296
    -"   assigned to the duplicate."
    
    112
    +#: src/code/unix-errno.lisp
    
    113
    +msgid "Not a director"
    
    297 114
     msgstr ""
    
    298 115
     
    
    299
    -#: src/code/unix.lisp
    
    300
    -msgid "Duplicate a file descriptor"
    
    116
    +#: src/code/unix-errno.lisp
    
    117
    +msgid "Is a directory"
    
    301 118
     msgstr ""
    
    302 119
     
    
    303
    -#: src/code/unix.lisp
    
    304
    -msgid "Get file desc. flags"
    
    120
    +#: src/code/unix-errno.lisp
    
    121
    +msgid "Invalid argument"
    
    305 122
     msgstr ""
    
    306 123
     
    
    307
    -#: src/code/unix.lisp
    
    308
    -msgid "Set file desc. flags"
    
    124
    +#: src/code/unix-errno.lisp
    
    125
    +msgid "File table overflow"
    
    309 126
     msgstr ""
    
    310 127
     
    
    311
    -#: src/code/unix.lisp
    
    312
    -msgid "Get file flags"
    
    128
    +#: src/code/unix-errno.lisp
    
    129
    +msgid "Too many open files"
    
    313 130
     msgstr ""
    
    314 131
     
    
    315
    -#: src/code/unix.lisp
    
    316
    -msgid "Set file flags"
    
    132
    +#: src/code/unix-errno.lisp
    
    133
    +msgid "Inappropriate ioctl for device"
    
    317 134
     msgstr ""
    
    318 135
     
    
    319
    -#: src/code/unix.lisp
    
    320
    -msgid "Get owner"
    
    136
    +#: src/code/unix-errno.lisp
    
    137
    +msgid "Text file busy"
    
    321 138
     msgstr ""
    
    322 139
     
    
    323
    -#: src/code/unix.lisp
    
    324
    -msgid "Get lock"
    
    140
    +#: src/code/unix-errno.lisp
    
    141
    +msgid "File too large"
    
    325 142
     msgstr ""
    
    326 143
     
    
    327
    -#: src/code/unix.lisp
    
    328
    -msgid "Set owner"
    
    144
    +#: src/code/unix-errno.lisp
    
    145
    +msgid "No space left on device"
    
    329 146
     msgstr ""
    
    330 147
     
    
    331
    -#: src/code/unix.lisp
    
    332
    -msgid "Set lock"
    
    148
    +#: src/code/unix-errno.lisp
    
    149
    +msgid "Illegal seek"
    
    333 150
     msgstr ""
    
    334 151
     
    
    335
    -#: src/code/unix.lisp
    
    336
    -msgid "Set lock, wait for release"
    
    152
    +#: src/code/unix-errno.lisp
    
    153
    +msgid "Read-only file system"
    
    337 154
     msgstr ""
    
    338 155
     
    
    339
    -#: src/code/unix.lisp
    
    340
    -msgid "Non-blocking reads"
    
    156
    +#: src/code/unix-errno.lisp
    
    157
    +msgid "Too many links"
    
    341 158
     msgstr ""
    
    342 159
     
    
    343
    -#: src/code/unix.lisp
    
    344
    -msgid "Append on each write"
    
    160
    +#: src/code/unix-errno.lisp
    
    161
    +msgid "Broken pipe"
    
    345 162
     msgstr ""
    
    346 163
     
    
    347
    -#: src/code/unix.lisp
    
    348
    -msgid "Signal pgrp when data ready"
    
    164
    +#: src/code/unix-errno.lisp
    
    165
    +msgid "Numerical argument out of domain"
    
    349 166
     msgstr ""
    
    350 167
     
    
    351
    -#: src/code/unix.lisp
    
    352
    -msgid "Create if nonexistant"
    
    168
    +#: src/code/unix-errno.lisp
    
    169
    +msgid "Result too large"
    
    353 170
     msgstr ""
    
    354 171
     
    
    355
    -#: src/code/unix.lisp
    
    356
    -msgid "Truncate to zero length"
    
    172
    +#: src/code/unix-errno.lisp
    
    173
    +msgid "Math result not representable"
    
    357 174
     msgstr ""
    
    358 175
     
    
    359
    -#: src/code/unix.lisp
    
    360
    -msgid "Error if already created"
    
    176
    +#: src/code/unix-errno.lisp
    
    177
    +msgid "Operation would block"
    
    361 178
     msgstr ""
    
    362 179
     
    
    363
    -#: src/code/unix.lisp
    
    364
    -msgid ""
    
    365
    -"Unix-fcntl manipulates file descriptors according to the\n"
    
    366
    -"   argument CMD which can be one of the following:\n"
    
    367
    -"\n"
    
    368
    -"   F-DUPFD         Duplicate a file descriptor.\n"
    
    369
    -"   F-GETFD         Get file descriptor flags.\n"
    
    370
    -"   F-SETFD         Set file descriptor flags.\n"
    
    371
    -"   F-GETFL         Get file flags.\n"
    
    372
    -"   F-SETFL         Set file flags.\n"
    
    373
    -"   F-GETOWN        Get owner.\n"
    
    374
    -"   F-SETOWN        Set owner.\n"
    
    375
    -"\n"
    
    376
    -"   The flags that can be specified for F-SETFL are:\n"
    
    377
    -"\n"
    
    378
    -"   FNDELAY         Non-blocking reads.\n"
    
    379
    -"   FAPPEND         Append on each write.\n"
    
    380
    -"   FASYNC          Signal pgrp when data ready.\n"
    
    381
    -"   FCREAT          Create if nonexistant.\n"
    
    382
    -"   FTRUNC          Truncate to zero length.\n"
    
    383
    -"   FEXCL           Error if already created.\n"
    
    384
    -"   "
    
    180
    +#: src/code/unix-errno.lisp
    
    181
    +msgid "Resource temporarily unavailable"
    
    385 182
     msgstr ""
    
    386 183
     
    
    387
    -#: src/code/unix.lisp
    
    388
    -msgid ""
    
    389
    -"Unix-pipe sets up a unix-piping mechanism consisting of\n"
    
    390
    -"  an input pipe and an output pipe.  Unix-Pipe returns two\n"
    
    391
    -"  values: if no error occurred the first value is the pipe\n"
    
    392
    -"  to be read from and the second is can be written to.  If\n"
    
    393
    -"  an error occurred the first value is NIL and the second\n"
    
    394
    -"  the unix error code."
    
    184
    +#: src/code/unix-errno.lisp
    
    185
    +msgid "Operation now in progress"
    
    395 186
     msgstr ""
    
    396 187
     
    
    397
    -#: src/code/unix.lisp
    
    398
    -msgid ""
    
    399
    -"Unix-read attempts to read from the file described by fd into\n"
    
    400
    -"   the buffer buf until it is full.  Len is the length of the buffer.\n"
    
    401
    -"   The number of bytes actually read is returned or NIL and an error\n"
    
    402
    -"   number if an error occured."
    
    188
    +#: src/code/unix-errno.lisp
    
    189
    +msgid "Operation already in progress"
    
    403 190
     msgstr ""
    
    404 191
     
    
    405
    -#: src/code/unix.lisp
    
    406
    -msgid ""
    
    407
    -"UNIX-READ attempts to read from the file described by fd into\n"
    
    408
    -"   the buffer buf until it is full.  Len is the length of the buffer.\n"
    
    409
    -"   The number of bytes actually read is returned or NIL and an error\n"
    
    410
    -"   number if an error occured."
    
    192
    +#: src/code/unix-errno.lisp
    
    193
    +msgid "Socket operation on non-socket"
    
    411 194
     msgstr ""
    
    412 195
     
    
    413
    -#: src/code/unix.lisp
    
    414
    -msgid ""
    
    415
    -"Unix-readlink invokes the readlink system call on the file name\n"
    
    416
    -"  specified by the simple string path.  It returns up to two values:\n"
    
    417
    -"  the contents of the symbolic link if the call is successful, or\n"
    
    418
    -"  NIL and the Unix error number."
    
    196
    +#: src/code/unix-errno.lisp
    
    197
    +msgid "Destination address required"
    
    419 198
     msgstr ""
    
    420 199
     
    
    421
    -#: src/code/unix.lisp
    
    422
    -msgid ""
    
    423
    -"Unix-rename renames the file with string name1 to the string\n"
    
    424
    -"   name2.  NIL and an error code is returned if an error occured."
    
    200
    +#: src/code/unix-errno.lisp
    
    201
    +msgid "Message too long"
    
    425 202
     msgstr ""
    
    426 203
     
    
    427
    -#: src/code/unix.lisp
    
    428
    -msgid ""
    
    429
    -"Unix-rmdir attempts to remove the directory name.  NIL and\n"
    
    430
    -"   an error number is returned if an error occured."
    
    204
    +#: src/code/unix-errno.lisp
    
    205
    +msgid "Protocol wrong type for socket"
    
    431 206
     msgstr ""
    
    432 207
     
    
    433
    -#: src/code/unix.lisp
    
    434
    -msgid ""
    
    435
    -"Unix-write attempts to write a character buffer (buf) of length\n"
    
    436
    -"   len to the file described by the file descriptor fd.  NIL and an\n"
    
    437
    -"   error is returned if the call is unsuccessful."
    
    208
    +#: src/code/unix-errno.lisp
    
    209
    +msgid "Protocol not available"
    
    438 210
     msgstr ""
    
    439 211
     
    
    440
    -#: src/code/unix.lisp
    
    441
    -msgid ""
    
    442
    -"Define an ioctl command. If the optional ARG and PARM-TYPE are given\n"
    
    443
    -"  then ioctl argument size and direction are included as for ioctls defined\n"
    
    444
    -"  by _IO, _IOR, _IOW, or _IOWR. If DEV is a character then the ioctl type\n"
    
    445
    -"  is the characters code, else DEV may be an integer giving the type."
    
    212
    +#: src/code/unix-errno.lisp
    
    213
    +msgid "Protocol not supported"
    
    446 214
     msgstr ""
    
    447 215
     
    
    448
    -#: src/code/unix.lisp
    
    449
    -msgid ""
    
    450
    -"Unix-ioctl performs a variety of operations on open i/o\n"
    
    451
    -"   descriptors.  See the UNIX Programmer's Manual for more\n"
    
    452
    -"   information."
    
    216
    +#: src/code/unix-errno.lisp
    
    217
    +msgid "Socket type not supported"
    
    453 218
     msgstr ""
    
    454 219
     
    
    455
    -#: src/code/unix.lisp
    
    456
    -msgid "Get terminal attributes."
    
    220
    +#: src/code/unix-errno.lisp
    
    221
    +msgid "Operation not supported on socket"
    
    457 222
     msgstr ""
    
    458 223
     
    
    459
    -#: src/code/unix.lisp
    
    460
    -msgid "Set terminal attributes."
    
    224
    +#: src/code/unix-errno.lisp
    
    225
    +msgid "Protocol family not supported"
    
    461 226
     msgstr ""
    
    462 227
     
    
    463
    -#: src/code/unix.lisp
    
    464
    -msgid "Get terminal output speed."
    
    228
    +#: src/code/unix-errno.lisp
    
    229
    +msgid "Address family not supported by protocol family"
    
    465 230
     msgstr ""
    
    466 231
     
    
    467
    -#: src/code/unix.lisp
    
    468
    -msgid ""
    
    469
    -"Unix-getuid returns the real user-id associated with the\n"
    
    470
    -"   current process."
    
    232
    +#: src/code/unix-errno.lisp
    
    233
    +msgid "Address already in use"
    
    471 234
     msgstr ""
    
    472 235
     
    
    473
    -#: src/code/unix.lisp
    
    474
    -msgid "Unix-gethostname returns the name of the host machine as a string."
    
    236
    +#: src/code/unix-errno.lisp
    
    237
    +msgid "Can't assign requested address"
    
    475 238
     msgstr ""
    
    476 239
     
    
    477
    -#: src/code/unix.lisp
    
    478
    -msgid ""
    
    479
    -"Unix-gethostid returns a 32-bit integer which provides unique\n"
    
    480
    -"   identification for the host machine."
    
    240
    +#: src/code/unix-errno.lisp
    
    241
    +msgid "Network is down"
    
    481 242
     msgstr ""
    
    482 243
     
    
    483
    -#: src/code/unix.lisp
    
    484
    -msgid ""
    
    485
    -"Unix-exit terminates the current process with an optional\n"
    
    486
    -"   error code.  If successful, the call doesn't return.  If\n"
    
    487
    -"   unsuccessful, the call returns NIL and an error number."
    
    244
    +#: src/code/unix-errno.lisp
    
    245
    +msgid "Network is unreachable"
    
    488 246
     msgstr ""
    
    489 247
     
    
    490
    -#: src/code/unix.lisp
    
    491
    -msgid "Size of control character vector."
    
    248
    +#: src/code/unix-errno.lisp
    
    249
    +msgid "Network dropped connection on reset"
    
    492 250
     msgstr ""
    
    493 251
     
    
    494
    -#: src/code/unix.lisp
    
    495
    -msgid ""
    
    496
    -"Unix-stat retrieves information about the specified\n"
    
    497
    -"   file returning them in the form of multiple values.  If the call\n"
    
    498
    -"   fails, then NIL and an error number is returned.  If the call\n"
    
    499
    -"   succeeds, then T is returned in addition to the following values\n"
    
    500
    -"   from the stat struct st:\n"
    
    501
    -"\n"
    
    502
    -"     st_dev        Device ID\n"
    
    503
    -"     st_ino        File serial number\n"
    
    504
    -"     st_mode       Mode of file\n"
    
    505
    -"     st_nlink      Number of hard links to the file\n"
    
    506
    -"     st_uid        User ID\n"
    
    507
    -"     st_gid        Group ID\n"
    
    508
    -"     st_rdev       Device ID (if file is character or block special)\n"
    
    509
    -"     st_atime      Last data access time, in sec\n"
    
    510
    -"     st_mtime      Last data modification time, in sec\n"
    
    511
    -"     st_ctime      Last file status change time, in sec\n"
    
    512
    -"     st_blksize    Preferred I/O block size\n"
    
    513
    -"     st_blocks     Number of blocks allocated. (Block size is implementation"
    
    514
    -" dependent.)\n"
    
    515
    -""
    
    252
    +#: src/code/unix-errno.lisp
    
    253
    +msgid "Software caused connection abort"
    
    516 254
     msgstr ""
    
    517 255
     
    
    518
    -#: src/code/unix.lisp
    
    519
    -msgid ""
    
    520
    -"Unix-fstat is similar to unix-stat except the file is specified\n"
    
    521
    -"   by the file descriptor fd.  If the call fails, then NIL and an\n"
    
    522
    -"   error number is returned.  If the call succeeds, then T is returned\n"
    
    523
    -"   in addition to the following values from the stat struct st:\n"
    
    524
    -"\n"
    
    525
    -"     st_dev        Device ID\n"
    
    526
    -"     st_ino        File serial number\n"
    
    527
    -"     st_mode       Mode of file\n"
    
    528
    -"     st_nlink      Number of hard links to the file\n"
    
    529
    -"     st_uid        User ID\n"
    
    530
    -"     st_gid        Group ID\n"
    
    531
    -"     st_rdev       Device ID (if file is character or block special)\n"
    
    532
    -"     st_atime      Last data access time, in sec\n"
    
    533
    -"     st_mtime      Last data modification time, in sec\n"
    
    534
    -"     st_ctime      Last file status change time, in sec\n"
    
    535
    -"     st_blksize    Preferred I/O block size\n"
    
    536
    -"     st_blocks     Number of blocks allocated. (Block size is implementation"
    
    537
    -" dependent.)\n"
    
    538
    -""
    
    256
    +#: src/code/unix-errno.lisp
    
    257
    +msgid "Connection reset by peer"
    
    539 258
     msgstr ""
    
    540 259
     
    
    541
    -#: src/code/unix.lisp
    
    542
    -msgid ""
    
    543
    -"Unix-lstat is similar to unix-stat except the specified\n"
    
    544
    -"   file must be a symbolic link.  If the call fails, then NIL and an\n"
    
    545
    -"   error number is returned.  If the call succeeds, then T is returned\n"
    
    546
    -"   in addition to the following values from the stat struct st:\n"
    
    547
    -"\n"
    
    548
    -"     st_dev        Device ID\n"
    
    549
    -"     st_ino        File serial number\n"
    
    550
    -"     st_mode       Mode of file\n"
    
    551
    -"     st_nlink      Number of hard links to the file\n"
    
    552
    -"     st_uid        User ID\n"
    
    553
    -"     st_gid        Group ID\n"
    
    554
    -"     st_rdev       Device ID (if file is character or block special)\n"
    
    555
    -"     st_atime      Last data access time, in sec\n"
    
    556
    -"     st_mtime      Last data modification time, in sec\n"
    
    557
    -"     st_ctime      Last file status change time, in sec\n"
    
    558
    -"     st_blksize    Preferred I/O block size\n"
    
    559
    -"     st_blocks     Number of blocks allocated. (Block size is implementation"
    
    560
    -" dependent.)\n"
    
    561
    -""
    
    260
    +#: src/code/unix-errno.lisp
    
    261
    +msgid "No buffer space available"
    
    562 262
     msgstr ""
    
    563 263
     
    
    564
    -#: src/code/unix.lisp
    
    565
    -msgid "The calling process."
    
    264
    +#: src/code/unix-errno.lisp
    
    265
    +msgid "Socket is already connected"
    
    566 266
     msgstr ""
    
    567 267
     
    
    568
    -#: src/code/unix.lisp
    
    569
    -msgid "Terminated child processes."
    
    268
    +#: src/code/unix-errno.lisp
    
    269
    +msgid "Socket is not connected"
    
    570 270
     msgstr ""
    
    571 271
     
    
    572
    -#: src/code/unix.lisp
    
    573
    -msgid ""
    
    574
    -"Like call getrusage, but return only the system and user time, and returns\n"
    
    575
    -"   the seconds and microseconds as separate values."
    
    272
    +#: src/code/unix-errno.lisp
    
    273
    +msgid "Can't send after socket shutdown"
    
    576 274
     msgstr ""
    
    577 275
     
    
    578
    -#: src/code/unix.lisp
    
    579
    -msgid ""
    
    580
    -"Unix-getrusage returns information about the resource usage\n"
    
    581
    -"   of the process specified by who.  Who can be either the\n"
    
    582
    -"   current process (rusage_self) or all of the terminated\n"
    
    583
    -"   child processes (rusage_children).  NIL and an error number\n"
    
    584
    -"   is returned if the call fails."
    
    276
    +#: src/code/unix-errno.lisp
    
    277
    +msgid "Too many references: can't splice"
    
    585 278
     msgstr ""
    
    586 279
     
    
    587
    -#: src/code/unix.lisp
    
    588
    -msgid "These bits determine file type."
    
    280
    +#: src/code/unix-errno.lisp
    
    281
    +msgid "Connection timed out"
    
    589 282
     msgstr ""
    
    590 283
     
    
    591
    -#: src/code/unix.lisp
    
    592
    -msgid "Directory"
    
    284
    +#: src/code/unix-errno.lisp
    
    285
    +msgid "Connection refused"
    
    593 286
     msgstr ""
    
    594 287
     
    
    595
    -#: src/code/unix.lisp
    
    596
    -msgid "Character device"
    
    288
    +#: src/code/unix-errno.lisp
    
    289
    +msgid "Too many levels of symbolic links"
    
    597 290
     msgstr ""
    
    598 291
     
    
    599
    -#: src/code/unix.lisp
    
    600
    -msgid "FIFO"
    
    292
    +#: src/code/unix-errno.lisp
    
    293
    +msgid "File name too long"
    
    601 294
     msgstr ""
    
    602 295
     
    
    603
    -#: src/code/unix.lisp
    
    604
    -msgid "Block device"
    
    296
    +#: src/code/unix-errno.lisp
    
    297
    +msgid "Host is down"
    
    605 298
     msgstr ""
    
    606 299
     
    
    607
    -#: src/code/unix.lisp
    
    608
    -msgid "Regular file"
    
    300
    +#: src/code/unix-errno.lisp
    
    301
    +msgid "No route to host"
    
    609 302
     msgstr ""
    
    610 303
     
    
    611
    -#: src/code/unix.lisp
    
    612
    -msgid "Symbolic link."
    
    304
    +#: src/code/unix-errno.lisp
    
    305
    +msgid "Directory not empty"
    
    613 306
     msgstr ""
    
    614 307
     
    
    615
    -#: src/code/unix.lisp
    
    616
    -msgid "Socket."
    
    308
    +#: src/code/unix-errno.lisp
    
    309
    +msgid "Too many processes"
    
    617 310
     msgstr ""
    
    618 311
     
    
    619
    -#: src/code/unix.lisp
    
    620
    -msgid "Returns either :file, :directory, :link, :special, or NIL."
    
    312
    +#: src/code/unix-errno.lisp
    
    313
    +msgid "Too many users"
    
    621 314
     msgstr ""
    
    622 315
     
    
    623
    -#: src/code/unix.lisp
    
    624
    -msgid "Returns the pathname with all symbolic links resolved."
    
    316
    +#: src/code/unix-errno.lisp
    
    317
    +msgid "Disc quota exceeded"
    
    625 318
     msgstr ""
    
    626 319
     
    
    627
    -#: src/code/unix.lisp
    
    628
    -msgid "Error reading link ~S: ~S"
    
    320
    +#: src/code/unix-errno.lisp
    
    321
    +msgid "namei should continue locally"
    
    629 322
     msgstr ""
    
    630 323
     
    
    631
    -#: src/code/unix.lisp
    
    632
    -msgid "Successful"
    
    324
    +#: src/code/unix-errno.lisp
    
    325
    +msgid "namei was handled remotely"
    
    633 326
     msgstr ""
    
    634 327
     
    
    635
    -#: src/code/unix.lisp
    
    636
    -msgid "Operation not permitted"
    
    328
    +#: src/code/unix-errno.lisp
    
    329
    +msgid "Remote file system error _N"
    
    637 330
     msgstr ""
    
    638 331
     
    
    639
    -#: src/code/unix.lisp
    
    640
    -msgid "No such file or directory"
    
    332
    +#: src/code/unix-errno.lisp
    
    333
    +msgid "syscall was handled by Vice"
    
    641 334
     msgstr ""
    
    642 335
     
    
    643
    -#: src/code/unix.lisp
    
    644
    -msgid "No such process"
    
    336
    +#: src/code/unix-errno.lisp
    
    337
    +msgid "No message of desired type"
    
    645 338
     msgstr ""
    
    646 339
     
    
    647
    -#: src/code/unix.lisp
    
    648
    -msgid "Interrupted system call"
    
    340
    +#: src/code/unix-errno.lisp
    
    341
    +msgid "Identifier removed"
    
    649 342
     msgstr ""
    
    650 343
     
    
    651
    -#: src/code/unix.lisp
    
    652
    -msgid "I/O error"
    
    344
    +#: src/code/unix-errno.lisp
    
    345
    +msgid "Channel number out of range"
    
    653 346
     msgstr ""
    
    654 347
     
    
    655
    -#: src/code/unix.lisp
    
    656
    -msgid "Device not configured"
    
    348
    +#: src/code/unix-errno.lisp
    
    349
    +msgid "Level 2 not synchronized"
    
    657 350
     msgstr ""
    
    658 351
     
    
    659
    -#: src/code/unix.lisp
    
    660
    -msgid "Arg list too long"
    
    352
    +#: src/code/unix-errno.lisp
    
    353
    +msgid "Level 3 halted"
    
    661 354
     msgstr ""
    
    662 355
     
    
    663
    -#: src/code/unix.lisp
    
    664
    -msgid "Exec format error"
    
    356
    +#: src/code/unix-errno.lisp
    
    357
    +msgid "Level 3 reset"
    
    665 358
     msgstr ""
    
    666 359
     
    
    667
    -#: src/code/unix.lisp
    
    668
    -msgid "Bad file descriptor"
    
    360
    +#: src/code/unix-errno.lisp
    
    361
    +msgid "Link number out of range"
    
    669 362
     msgstr ""
    
    670 363
     
    
    671
    -#: src/code/unix.lisp
    
    672
    -msgid "No child process"
    
    364
    +#: src/code/unix-errno.lisp
    
    365
    +msgid "Protocol driver not attached"
    
    673 366
     msgstr ""
    
    674 367
     
    
    675
    -#: src/code/unix.lisp
    
    676
    -msgid "Resource deadlock avoided"
    
    368
    +#: src/code/unix-errno.lisp
    
    369
    +msgid "No CSI structure available"
    
    677 370
     msgstr ""
    
    678 371
     
    
    679
    -#: src/code/unix.lisp
    
    680
    -msgid "No more processes"
    
    372
    +#: src/code/unix-errno.lisp
    
    373
    +msgid "Level 2 halted"
    
    681 374
     msgstr ""
    
    682 375
     
    
    683
    -#: src/code/unix.lisp
    
    684
    -msgid "Try again"
    
    376
    +#: src/code/unix-errno.lisp
    
    377
    +msgid "Deadlock situation detected/avoided"
    
    685 378
     msgstr ""
    
    686 379
     
    
    687
    -#: src/code/unix.lisp
    
    688
    -msgid "Out of memory"
    
    380
    +#: src/code/unix-errno.lisp
    
    381
    +msgid "No record locks available"
    
    689 382
     msgstr ""
    
    690 383
     
    
    691
    -#: src/code/unix.lisp
    
    692
    -msgid "Permission denied"
    
    384
    +#: src/code/unix-errno.lisp
    
    385
    +msgid "Error 47"
    
    693 386
     msgstr ""
    
    694 387
     
    
    695
    -#: src/code/unix.lisp
    
    696
    -msgid "Bad address"
    
    388
    +#: src/code/unix-errno.lisp
    
    389
    +msgid "Error 48"
    
    697 390
     msgstr ""
    
    698 391
     
    
    699
    -#: src/code/unix.lisp
    
    700
    -msgid "Block device required"
    
    392
    +#: src/code/unix-errno.lisp
    
    393
    +msgid "Bad exchange descriptor"
    
    701 394
     msgstr ""
    
    702 395
     
    
    703
    -#: src/code/unix.lisp
    
    704
    -msgid "Device or resource busy"
    
    396
    +#: src/code/unix-errno.lisp
    
    397
    +msgid "Bad request descriptor"
    
    705 398
     msgstr ""
    
    706 399
     
    
    707
    -#: src/code/unix.lisp
    
    708
    -msgid "File exists"
    
    400
    +#: src/code/unix-errno.lisp
    
    401
    +msgid "Message tables full"
    
    709 402
     msgstr ""
    
    710 403
     
    
    711
    -#: src/code/unix.lisp
    
    712
    -msgid "Cross-device link"
    
    404
    +#: src/code/unix-errno.lisp
    
    405
    +msgid "Anode table overflow"
    
    713 406
     msgstr ""
    
    714 407
     
    
    715
    -#: src/code/unix.lisp
    
    716
    -msgid "No such device"
    
    408
    +#: src/code/unix-errno.lisp
    
    409
    +msgid "Bad request code"
    
    717 410
     msgstr ""
    
    718 411
     
    
    719
    -#: src/code/unix.lisp
    
    720
    -msgid "Not a director"
    
    412
    +#: src/code/unix-errno.lisp
    
    413
    +msgid "Invalid slot"
    
    721 414
     msgstr ""
    
    722 415
     
    
    723
    -#: src/code/unix.lisp
    
    724
    -msgid "Is a directory"
    
    416
    +#: src/code/unix-errno.lisp
    
    417
    +msgid "File locking deadlock"
    
    725 418
     msgstr ""
    
    726 419
     
    
    727
    -#: src/code/unix.lisp
    
    728
    -msgid "Invalid argument"
    
    420
    +#: src/code/unix-errno.lisp
    
    421
    +msgid "Bad font file format"
    
    729 422
     msgstr ""
    
    730 423
     
    
    731
    -#: src/code/unix.lisp
    
    732
    -msgid "File table overflow"
    
    424
    +#: src/code/unix-errno.lisp
    
    425
    +msgid "Not a stream device"
    
    733 426
     msgstr ""
    
    734 427
     
    
    735
    -#: src/code/unix.lisp
    
    736
    -msgid "Too many open files"
    
    428
    +#: src/code/unix-errno.lisp
    
    429
    +msgid "No data available"
    
    737 430
     msgstr ""
    
    738 431
     
    
    739
    -#: src/code/unix.lisp
    
    740
    -msgid "Inappropriate ioctl for device"
    
    432
    +#: src/code/unix-errno.lisp
    
    433
    +msgid "Timer expired"
    
    741 434
     msgstr ""
    
    742
    -
    
    743
    -#: src/code/unix.lisp
    
    744
    -msgid "Text file busy"
    
    435
    +
    
    436
    +#: src/code/unix-errno.lisp
    
    437
    +msgid "Out of stream resources"
    
    745 438
     msgstr ""
    
    746 439
     
    
    747
    -#: src/code/unix.lisp
    
    748
    -msgid "File too large"
    
    440
    +#: src/code/unix-errno.lisp
    
    441
    +msgid "Machine is not on the network"
    
    749 442
     msgstr ""
    
    750 443
     
    
    751
    -#: src/code/unix.lisp
    
    752
    -msgid "No space left on device"
    
    444
    +#: src/code/unix-errno.lisp
    
    445
    +msgid "Package not installed"
    
    753 446
     msgstr ""
    
    754 447
     
    
    755
    -#: src/code/unix.lisp
    
    756
    -msgid "Illegal seek"
    
    448
    +#: src/code/unix-errno.lisp
    
    449
    +msgid "Object is remote"
    
    757 450
     msgstr ""
    
    758 451
     
    
    759
    -#: src/code/unix.lisp
    
    760
    -msgid "Read-only file system"
    
    452
    +#: src/code/unix-errno.lisp
    
    453
    +msgid "Link has been severed"
    
    761 454
     msgstr ""
    
    762 455
     
    
    763
    -#: src/code/unix.lisp
    
    764
    -msgid "Too many links"
    
    456
    +#: src/code/unix-errno.lisp
    
    457
    +msgid "Advertise error"
    
    765 458
     msgstr ""
    
    766 459
     
    
    767
    -#: src/code/unix.lisp
    
    768
    -msgid "Broken pipe"
    
    460
    +#: src/code/unix-errno.lisp
    
    461
    +msgid "Srmount error"
    
    769 462
     msgstr ""
    
    770 463
     
    
    771
    -#: src/code/unix.lisp
    
    772
    -msgid "Numerical argument out of domain"
    
    464
    +#: src/code/unix-errno.lisp
    
    465
    +msgid "Communication error on send"
    
    773 466
     msgstr ""
    
    774 467
     
    
    775
    -#: src/code/unix.lisp
    
    776
    -msgid "Result too large"
    
    468
    +#: src/code/unix-errno.lisp
    
    469
    +msgid "Protocol error"
    
    777 470
     msgstr ""
    
    778 471
     
    
    779
    -#: src/code/unix.lisp
    
    780
    -msgid "Math result not representable"
    
    472
    +#: src/code/unix-errno.lisp
    
    473
    +msgid "Multihop attempted"
    
    781 474
     msgstr ""
    
    782 475
     
    
    783
    -#: src/code/unix.lisp
    
    784
    -msgid "Operation would block"
    
    476
    +#: src/code/unix-errno.lisp
    
    477
    +msgid "Not a data message"
    
    785 478
     msgstr ""
    
    786 479
     
    
    787
    -#: src/code/unix.lisp
    
    788
    -msgid "Resource temporarily unavailable"
    
    480
    +#: src/code/unix-errno.lisp
    
    481
    +msgid "Value too large for defined data type"
    
    789 482
     msgstr ""
    
    790 483
     
    
    791
    -#: src/code/unix.lisp
    
    792
    -msgid "Operation now in progress"
    
    484
    +#: src/code/unix-errno.lisp
    
    485
    +msgid "Name not unique on network"
    
    793 486
     msgstr ""
    
    794 487
     
    
    795
    -#: src/code/unix.lisp
    
    796
    -msgid "Operation already in progress"
    
    488
    +#: src/code/unix-errno.lisp
    
    489
    +msgid "File descriptor in bad state"
    
    797 490
     msgstr ""
    
    798 491
     
    
    799
    -#: src/code/unix.lisp
    
    800
    -msgid "Socket operation on non-socket"
    
    492
    +#: src/code/unix-errno.lisp
    
    493
    +msgid "Remote address changed"
    
    801 494
     msgstr ""
    
    802 495
     
    
    803
    -#: src/code/unix.lisp
    
    804
    -msgid "Destination address required"
    
    496
    +#: src/code/unix-errno.lisp
    
    497
    +msgid "Can not access a needed shared library"
    
    805 498
     msgstr ""
    
    806 499
     
    
    807
    -#: src/code/unix.lisp
    
    808
    -msgid "Message too long"
    
    500
    +#: src/code/unix-errno.lisp
    
    501
    +msgid "Accessing a corrupted shared library"
    
    809 502
     msgstr ""
    
    810 503
     
    
    811
    -#: src/code/unix.lisp
    
    812
    -msgid "Protocol wrong type for socket"
    
    504
    +#: src/code/unix-errno.lisp
    
    505
    +msgid ".lib section in a.out corrupted"
    
    813 506
     msgstr ""
    
    814 507
     
    
    815
    -#: src/code/unix.lisp
    
    816
    -msgid "Protocol not available"
    
    508
    +#: src/code/unix-errno.lisp
    
    509
    +msgid "Attempting to link in more shared libraries than system limit"
    
    817 510
     msgstr ""
    
    818 511
     
    
    819
    -#: src/code/unix.lisp
    
    820
    -msgid "Protocol not supported"
    
    512
    +#: src/code/unix-errno.lisp
    
    513
    +msgid "Can not exec a shared library directly"
    
    821 514
     msgstr ""
    
    822 515
     
    
    823
    -#: src/code/unix.lisp
    
    824
    -msgid "Socket type not supported"
    
    516
    +#: src/code/unix-errno.lisp
    
    517
    +msgid "Error 88"
    
    825 518
     msgstr ""
    
    826 519
     
    
    827
    -#: src/code/unix.lisp
    
    828
    -msgid "Operation not supported on socket"
    
    520
    +#: src/code/unix-errno.lisp
    
    521
    +msgid "Operation not applicable"
    
    829 522
     msgstr ""
    
    830 523
     
    
    831
    -#: src/code/unix.lisp
    
    832
    -msgid "Protocol family not supported"
    
    524
    +#: src/code/unix-errno.lisp
    
    525
    +msgid ""
    
    526
    +"Number of symbolic links encountered during path name traversal exceeds "
    
    527
    +"MAXSYMLINKS"
    
    833 528
     msgstr ""
    
    834 529
     
    
    835
    -#: src/code/unix.lisp
    
    836
    -msgid "Address family not supported by protocol family"
    
    530
    +#: src/code/unix-errno.lisp
    
    531
    +msgid "Error 91"
    
    837 532
     msgstr ""
    
    838 533
     
    
    839
    -#: src/code/unix.lisp
    
    840
    -msgid "Address already in use"
    
    534
    +#: src/code/unix-errno.lisp
    
    535
    +msgid "Error 92"
    
    841 536
     msgstr ""
    
    842 537
     
    
    843
    -#: src/code/unix.lisp
    
    844
    -msgid "Can't assign requested address"
    
    538
    +#: src/code/unix-errno.lisp
    
    539
    +msgid "Option not supported by protocol"
    
    845 540
     msgstr ""
    
    846 541
     
    
    847
    -#: src/code/unix.lisp
    
    848
    -msgid "Network is down"
    
    542
    +#: src/code/unix-errno.lisp
    
    543
    +msgid "Operation not supported on transport endpoint"
    
    849 544
     msgstr ""
    
    850 545
     
    
    851
    -#: src/code/unix.lisp
    
    852
    -msgid "Network is unreachable"
    
    546
    +#: src/code/unix-errno.lisp
    
    547
    +msgid "Cannot assign requested address"
    
    853 548
     msgstr ""
    
    854 549
     
    
    855
    -#: src/code/unix.lisp
    
    856
    -msgid "Network dropped connection on reset"
    
    550
    +#: src/code/unix-errno.lisp
    
    551
    +msgid "Network dropped connection because of reset"
    
    857 552
     msgstr ""
    
    858 553
     
    
    859
    -#: src/code/unix.lisp
    
    860
    -msgid "Software caused connection abort"
    
    554
    +#: src/code/unix-errno.lisp
    
    555
    +msgid "Transport endpoint is already connected"
    
    861 556
     msgstr ""
    
    862 557
     
    
    863
    -#: src/code/unix.lisp
    
    864
    -msgid "Connection reset by peer"
    
    558
    +#: src/code/unix-errno.lisp
    
    559
    +msgid "Transport endpoint is not connected"
    
    865 560
     msgstr ""
    
    866 561
     
    
    867
    -#: src/code/unix.lisp
    
    868
    -msgid "No buffer space available"
    
    562
    +#: src/code/unix-errno.lisp
    
    563
    +msgid "Cannot send after socket shutdown"
    
    869 564
     msgstr ""
    
    870 565
     
    
    871
    -#: src/code/unix.lisp
    
    872
    -msgid "Socket is already connected"
    
    566
    +#: src/code/unix-errno.lisp
    
    567
    +msgid "Too many references: cannot splice"
    
    873 568
     msgstr ""
    
    874 569
     
    
    875
    -#: src/code/unix.lisp
    
    876
    -msgid "Socket is not connected"
    
    570
    +#: src/code/unix-errno.lisp
    
    571
    +msgid "Stale NFS file handle"
    
    877 572
     msgstr ""
    
    878 573
     
    
    879 574
     #: src/code/unix.lisp
    
    880
    -msgid "Can't send after socket shutdown"
    
    575
    +msgid ""
    
    576
    +"The encoding to use for converting a namestring to a string that can\n"
    
    577
    +"  be used by the operations system.  It must be a valid\n"
    
    578
    +"  external-format name or :NULL.  :NULL means the string\n"
    
    579
    +"  is passed as is to the operating system.  The operating system will\n"
    
    580
    +"  get the low 8 bits of each UTF-16 code unit of the string."
    
    881 581
     msgstr ""
    
    882 582
     
    
    883 583
     #: src/code/unix.lisp
    
    884
    -msgid "Too many references: can't splice"
    
    584
    +msgid "Syscall ~A failed: ~A"
    
    885 585
     msgstr ""
    
    886 586
     
    
    887 587
     #: src/code/unix.lisp
    
    888
    -msgid "Connection timed out"
    
    588
    +msgid "Test for read permission"
    
    889 589
     msgstr ""
    
    890 590
     
    
    891 591
     #: src/code/unix.lisp
    
    892
    -msgid "Connection refused"
    
    592
    +msgid "Class not yet defined: ~S"
    
    893 593
     msgstr ""
    
    894 594
     
    
    895 595
     #: src/code/unix.lisp
    
    896
    -msgid "Too many levels of symbolic links"
    
    596
    +msgid "Test for write permission"
    
    897 597
     msgstr ""
    
    898 598
     
    
    899 599
     #: src/code/unix.lisp
    
    900
    -msgid "File name too long"
    
    600
    +msgid "Test for execute permission"
    
    901 601
     msgstr ""
    
    902 602
     
    
    903 603
     #: src/code/unix.lisp
    
    904
    -msgid "Host is down"
    
    604
    +msgid "Test for presence of file"
    
    905 605
     msgstr ""
    
    906 606
     
    
    907 607
     #: src/code/unix.lisp
    
    908
    -msgid "No route to host"
    
    608
    +msgid ""
    
    609
    +"Given a file path (a string) and one of four constant modes,\n"
    
    610
    +"   unix-access returns T if the file is accessible with that\n"
    
    611
    +"   mode and NIL if not.  It also returns an errno value with\n"
    
    612
    +"   NIL which determines why the file was not accessible.\n"
    
    613
    +"\n"
    
    614
    +"   The access modes are:\n"
    
    615
    +"	r_ok     Read permission.\n"
    
    616
    +"	w_ok     Write permission.\n"
    
    617
    +"	x_ok     Execute permission.\n"
    
    618
    +"	f_ok     Presence of file."
    
    909 619
     msgstr ""
    
    910 620
     
    
    911 621
     #: src/code/unix.lisp
    
    912
    -msgid "Directory not empty"
    
    622
    +msgid ""
    
    623
    +"Given a file path string, unix-chdir changes the current working \n"
    
    624
    +"   directory to the one specified."
    
    913 625
     msgstr ""
    
    914 626
     
    
    915 627
     #: src/code/unix.lisp
    
    916
    -msgid "Too many processes"
    
    628
    +msgid "Set user ID on execution"
    
    917 629
     msgstr ""
    
    918 630
     
    
    919 631
     #: src/code/unix.lisp
    
    920
    -msgid "Too many users"
    
    632
    +msgid "Set group ID on execution"
    
    921 633
     msgstr ""
    
    922 634
     
    
    923 635
     #: src/code/unix.lisp
    
    924
    -msgid "Disc quota exceeded"
    
    636
    +msgid "Save text image after execution"
    
    925 637
     msgstr ""
    
    926 638
     
    
    927 639
     #: src/code/unix.lisp
    
    928
    -msgid "namei should continue locally"
    
    640
    +msgid "Read by owner"
    
    929 641
     msgstr ""
    
    930 642
     
    
    931 643
     #: src/code/unix.lisp
    
    932
    -msgid "namei was handled remotely"
    
    644
    +msgid "Write by owner"
    
    933 645
     msgstr ""
    
    934 646
     
    
    935 647
     #: src/code/unix.lisp
    
    936
    -msgid "Remote file system error _N"
    
    648
    +msgid "Execute (search directory) by owner"
    
    937 649
     msgstr ""
    
    938 650
     
    
    939 651
     #: src/code/unix.lisp
    
    940
    -msgid "syscall was handled by Vice"
    
    652
    +msgid "Read by group"
    
    941 653
     msgstr ""
    
    942 654
     
    
    943 655
     #: src/code/unix.lisp
    
    944
    -msgid "No message of desired type"
    
    656
    +msgid "Write by group"
    
    945 657
     msgstr ""
    
    946 658
     
    
    947 659
     #: src/code/unix.lisp
    
    948
    -msgid "Identifier removed"
    
    660
    +msgid "Execute (search directory) by group"
    
    949 661
     msgstr ""
    
    950 662
     
    
    951 663
     #: src/code/unix.lisp
    
    952
    -msgid "Channel number out of range"
    
    664
    +msgid "Read by others"
    
    953 665
     msgstr ""
    
    954 666
     
    
    955 667
     #: src/code/unix.lisp
    
    956
    -msgid "Level 2 not synchronized"
    
    668
    +msgid "Write by others"
    
    957 669
     msgstr ""
    
    958 670
     
    
    959 671
     #: src/code/unix.lisp
    
    960
    -msgid "Level 3 halted"
    
    672
    +msgid "Execute (search directory) by others"
    
    961 673
     msgstr ""
    
    962 674
     
    
    963 675
     #: src/code/unix.lisp
    
    964
    -msgid "Level 3 reset"
    
    676
    +msgid ""
    
    677
    +"Given a file path string and a constant mode, unix-chmod changes the\n"
    
    678
    +"   permission mode for that file to the one specified. The new mode\n"
    
    679
    +"   can be created by logically OR'ing the following:\n"
    
    680
    +"\n"
    
    681
    +"      setuidexec        Set user ID on execution.\n"
    
    682
    +"      setgidexec        Set group ID on execution.\n"
    
    683
    +"      savetext          Save text image after execution.\n"
    
    684
    +"      readown           Read by owner.\n"
    
    685
    +"      writeown          Write by owner.\n"
    
    686
    +"      execown           Execute (search directory) by owner.\n"
    
    687
    +"      readgrp           Read by group.\n"
    
    688
    +"      writegrp          Write by group.\n"
    
    689
    +"      execgrp           Execute (search directory) by group.\n"
    
    690
    +"      readoth           Read by others.\n"
    
    691
    +"      writeoth          Write by others.\n"
    
    692
    +"      execoth           Execute (search directory) by others.\n"
    
    693
    +"  \n"
    
    694
    +"  Thus #o444 and (logior unix:readown unix:readgrp unix:readoth)\n"
    
    695
    +"  are equivalent for 'mode.  The octal-base is familar to Unix users.\n"
    
    696
    +"\n"
    
    697
    +"  It returns T on successfully completion; NIL and an error number\n"
    
    698
    +"  otherwise."
    
    965 699
     msgstr ""
    
    966 700
     
    
    967 701
     #: src/code/unix.lisp
    
    968
    -msgid "Link number out of range"
    
    702
    +msgid ""
    
    703
    +"Given an integer file descriptor and a mode (the same as those\n"
    
    704
    +"   used for unix-chmod), unix-fchmod changes the permission mode\n"
    
    705
    +"   for that file to the one specified. T is returned if the call\n"
    
    706
    +"   was successful."
    
    969 707
     msgstr ""
    
    970 708
     
    
    971 709
     #: src/code/unix.lisp
    
    972
    -msgid "Protocol driver not attached"
    
    710
    +msgid "set the file pointer"
    
    973 711
     msgstr ""
    
    974 712
     
    
    975 713
     #: src/code/unix.lisp
    
    976
    -msgid "No CSI structure available"
    
    714
    +msgid "increment the file pointer"
    
    977 715
     msgstr ""
    
    978 716
     
    
    979 717
     #: src/code/unix.lisp
    
    980
    -msgid "Level 2 halted"
    
    718
    +msgid "extend the file size"
    
    981 719
     msgstr ""
    
    982 720
     
    
    983 721
     #: src/code/unix.lisp
    
    984
    -msgid "Deadlock situation detected/avoided"
    
    722
    +msgid ""
    
    723
    +"Unix-lseek accepts a file descriptor and moves the file pointer ahead\n"
    
    724
    +"   a certain offset for that file.  Whence can be any of the following:\n"
    
    725
    +"\n"
    
    726
    +"   l_set        Set the file pointer.\n"
    
    727
    +"   l_incr       Increment the file pointer.\n"
    
    728
    +"   l_xtnd       Extend the file size.\n"
    
    729
    +"  _N"
    
    985 730
     msgstr ""
    
    986 731
     
    
    987 732
     #: src/code/unix.lisp
    
    988
    -msgid "No record locks available"
    
    733
    +msgid ""
    
    734
    +"UNIX-LSEEK accepts a file descriptor and moves the file pointer ahead\n"
    
    735
    +"   a certain OFFSET for that file.  WHENCE can be any of the following:\n"
    
    736
    +"\n"
    
    737
    +"   l_set        Set the file pointer.\n"
    
    738
    +"   l_incr       Increment the file pointer.\n"
    
    739
    +"   l_xtnd       Extend the file size.\n"
    
    740
    +"  "
    
    989 741
     msgstr ""
    
    990 742
     
    
    991 743
     #: src/code/unix.lisp
    
    992
    -msgid "Error 47"
    
    744
    +msgid ""
    
    745
    +"Unix-mkdir creates a new directory with the specified name and mode.\n"
    
    746
    +"   (Same as those for unix-chmod.)  It returns T upon success, otherwise\n"
    
    747
    +"   NIL and an error number."
    
    993 748
     msgstr ""
    
    994 749
     
    
    995 750
     #: src/code/unix.lisp
    
    996
    -msgid "Error 48"
    
    751
    +msgid ""
    
    752
    +"Unix-unlink removes the directory entry for the named file.\n"
    
    753
    +"   NIL and an error code is returned if the call fails."
    
    997 754
     msgstr ""
    
    998 755
     
    
    999 756
     #: src/code/unix.lisp
    
    1000
    -msgid "Bad exchange descriptor"
    
    757
    +msgid "Read-only flag."
    
    1001 758
     msgstr ""
    
    1002 759
     
    
    1003 760
     #: src/code/unix.lisp
    
    1004
    -msgid "Bad request descriptor"
    
    761
    +msgid "Write-only flag."
    
    1005 762
     msgstr ""
    
    1006 763
     
    
    1007 764
     #: src/code/unix.lisp
    
    1008
    -msgid "Message tables full"
    
    765
    +msgid "Read-write flag."
    
    1009 766
     msgstr ""
    
    1010 767
     
    
    1011 768
     #: src/code/unix.lisp
    
    1012
    -msgid "Anode table overflow"
    
    769
    +msgid "Non-blocking I/O"
    
    1013 770
     msgstr ""
    
    1014 771
     
    
    1015 772
     #: src/code/unix.lisp
    
    1016
    -msgid "Bad request code"
    
    773
    +msgid "Append flag."
    
    1017 774
     msgstr ""
    
    1018 775
     
    
    1019 776
     #: src/code/unix.lisp
    
    1020
    -msgid "Invalid slot"
    
    777
    +msgid "Create if nonexistant flag."
    
    1021 778
     msgstr ""
    
    1022 779
     
    
    1023 780
     #: src/code/unix.lisp
    
    1024
    -msgid "File locking deadlock"
    
    781
    +msgid "Truncate flag."
    
    1025 782
     msgstr ""
    
    1026 783
     
    
    1027 784
     #: src/code/unix.lisp
    
    1028
    -msgid "Bad font file format"
    
    785
    +msgid "Error if already exists."
    
    1029 786
     msgstr ""
    
    1030 787
     
    
    1031 788
     #: src/code/unix.lisp
    
    1032
    -msgid "Not a stream device"
    
    789
    +msgid "Don't assign controlling tty"
    
    1033 790
     msgstr ""
    
    1034 791
     
    
    1035 792
     #: src/code/unix.lisp
    
    1036
    -msgid "No data available"
    
    793
    +msgid "Non-blocking mode"
    
    1037 794
     msgstr ""
    
    1038 795
     
    
    1039 796
     #: src/code/unix.lisp
    
    1040
    -msgid "Timer expired"
    
    797
    +msgid "Synchronous writes (on ext2)"
    
    1041 798
     msgstr ""
    
    1042 799
     
    
    1043 800
     #: src/code/unix.lisp
    
    1044
    -msgid "Out of stream resources"
    
    801
    +msgid "Asynchronous I/O"
    
    1045 802
     msgstr ""
    
    1046 803
     
    
    1047 804
     #: src/code/unix.lisp
    
    1048
    -msgid "Machine is not on the network"
    
    805
    +msgid ""
    
    806
    +"Unix-open opens the file whose pathname is specified by path\n"
    
    807
    +"   for reading and/or writing as specified by the flags argument.\n"
    
    808
    +"   The flags argument can be:\n"
    
    809
    +"\n"
    
    810
    +"     o_rdonly        Read-only flag.\n"
    
    811
    +"     o_wronly        Write-only flag.\n"
    
    812
    +"     o_rdwr          Read-and-write flag.\n"
    
    813
    +"     o_append        Append flag.\n"
    
    814
    +"     o_creat         Create-if-nonexistant flag.\n"
    
    815
    +"     o_trunc         Truncate-to-size-0 flag.\n"
    
    816
    +"\n"
    
    817
    +"   If the o_creat flag is specified, then the file is created with\n"
    
    818
    +"   a permission of argument mode if the file doesn't exist.  An\n"
    
    819
    +"   integer file descriptor is returned by unix-open."
    
    1049 820
     msgstr ""
    
    1050 821
     
    
    1051 822
     #: src/code/unix.lisp
    
    1052
    -msgid "Package not installed"
    
    823
    +msgid ""
    
    824
    +"Unix-close takes an integer file descriptor as an argument and\n"
    
    825
    +"   closes the file associated with it.  T is returned upon successful\n"
    
    826
    +"   completion, otherwise NIL and an error number."
    
    1053 827
     msgstr ""
    
    1054 828
     
    
    1055 829
     #: src/code/unix.lisp
    
    1056
    -msgid "Object is remote"
    
    830
    +msgid ""
    
    831
    +"Unix-creat accepts a file name and a mode (same as those for\n"
    
    832
    +"   unix-chmod) and creates a file by that name with the specified\n"
    
    833
    +"   permission mode.  It returns a file descriptor on success,\n"
    
    834
    +"   or NIL and an error  number otherwise.\n"
    
    835
    +"\n"
    
    836
    +"   This interface is made obsolete by UNIX-OPEN."
    
    1057 837
     msgstr ""
    
    1058 838
     
    
    1059 839
     #: src/code/unix.lisp
    
    1060
    -msgid "Link has been severed"
    
    840
    +msgid ""
    
    841
    +"Unix-dup duplicates an existing file descriptor (given as the\n"
    
    842
    +"   argument) and return it.  If FD is not a valid file descriptor, NIL\n"
    
    843
    +"   and an error number are returned."
    
    1061 844
     msgstr ""
    
    1062 845
     
    
    1063 846
     #: src/code/unix.lisp
    
    1064
    -msgid "Advertise error"
    
    847
    +msgid ""
    
    848
    +"Unix-dup2 duplicates an existing file descriptor just as unix-dup\n"
    
    849
    +"   does only the new value of the duplicate descriptor may be requested\n"
    
    850
    +"   through the second argument.  If a file already exists with the\n"
    
    851
    +"   requested descriptor number, it will be closed and the number\n"
    
    852
    +"   assigned to the duplicate."
    
    1065 853
     msgstr ""
    
    1066 854
     
    
    1067 855
     #: src/code/unix.lisp
    
    1068
    -msgid "Srmount error"
    
    856
    +msgid "Duplicate a file descriptor"
    
    1069 857
     msgstr ""
    
    1070 858
     
    
    1071 859
     #: src/code/unix.lisp
    
    1072
    -msgid "Communication error on send"
    
    860
    +msgid "Get file desc. flags"
    
    1073 861
     msgstr ""
    
    1074 862
     
    
    1075 863
     #: src/code/unix.lisp
    
    1076
    -msgid "Protocol error"
    
    864
    +msgid "Set file desc. flags"
    
    1077 865
     msgstr ""
    
    1078 866
     
    
    1079 867
     #: src/code/unix.lisp
    
    1080
    -msgid "Multihop attempted"
    
    868
    +msgid "Get file flags"
    
    1081 869
     msgstr ""
    
    1082 870
     
    
    1083 871
     #: src/code/unix.lisp
    
    1084
    -msgid "Not a data message"
    
    872
    +msgid "Set file flags"
    
    1085 873
     msgstr ""
    
    1086 874
     
    
    1087 875
     #: src/code/unix.lisp
    
    1088
    -msgid "Value too large for defined data type"
    
    876
    +msgid "Get owner"
    
    1089 877
     msgstr ""
    
    1090 878
     
    
    1091 879
     #: src/code/unix.lisp
    
    1092
    -msgid "Name not unique on network"
    
    880
    +msgid "Get lock"
    
    1093 881
     msgstr ""
    
    1094 882
     
    
    1095 883
     #: src/code/unix.lisp
    
    1096
    -msgid "File descriptor in bad state"
    
    884
    +msgid "Set owner"
    
    1097 885
     msgstr ""
    
    1098 886
     
    
    1099 887
     #: src/code/unix.lisp
    
    1100
    -msgid "Remote address changed"
    
    888
    +msgid "Set lock"
    
    1101 889
     msgstr ""
    
    1102 890
     
    
    1103 891
     #: src/code/unix.lisp
    
    1104
    -msgid "Can not access a needed shared library"
    
    892
    +msgid "Set lock, wait for release"
    
    1105 893
     msgstr ""
    
    1106 894
     
    
    1107 895
     #: src/code/unix.lisp
    
    1108
    -msgid "Accessing a corrupted shared library"
    
    896
    +msgid "Non-blocking reads"
    
    1109 897
     msgstr ""
    
    1110 898
     
    
    1111 899
     #: src/code/unix.lisp
    
    1112
    -msgid ".lib section in a.out corrupted"
    
    900
    +msgid "Append on each write"
    
    1113 901
     msgstr ""
    
    1114 902
     
    
    1115 903
     #: src/code/unix.lisp
    
    1116
    -msgid "Attempting to link in more shared libraries than system limit"
    
    904
    +msgid "Signal pgrp when data ready"
    
    1117 905
     msgstr ""
    
    1118 906
     
    
    1119 907
     #: src/code/unix.lisp
    
    1120
    -msgid "Can not exec a shared library directly"
    
    908
    +msgid "Create if nonexistant"
    
    1121 909
     msgstr ""
    
    1122 910
     
    
    1123 911
     #: src/code/unix.lisp
    
    1124
    -msgid "Error 88"
    
    912
    +msgid "Truncate to zero length"
    
    1125 913
     msgstr ""
    
    1126 914
     
    
    1127 915
     #: src/code/unix.lisp
    
    1128
    -msgid "Operation not applicable"
    
    916
    +msgid "Error if already created"
    
    1129 917
     msgstr ""
    
    1130 918
     
    
    1131 919
     #: src/code/unix.lisp
    
    1132 920
     msgid ""
    
    1133
    -"Number of symbolic links encountered during path name traversal exceeds "
    
    1134
    -"MAXSYMLINKS"
    
    1135
    -msgstr ""
    
    1136
    -
    
    1137
    -#: src/code/unix.lisp
    
    1138
    -msgid "Error 91"
    
    921
    +"Unix-fcntl manipulates file descriptors according to the\n"
    
    922
    +"   argument CMD which can be one of the following:\n"
    
    923
    +"\n"
    
    924
    +"   F-DUPFD         Duplicate a file descriptor.\n"
    
    925
    +"   F-GETFD         Get file descriptor flags.\n"
    
    926
    +"   F-SETFD         Set file descriptor flags.\n"
    
    927
    +"   F-GETFL         Get file flags.\n"
    
    928
    +"   F-SETFL         Set file flags.\n"
    
    929
    +"   F-GETOWN        Get owner.\n"
    
    930
    +"   F-SETOWN        Set owner.\n"
    
    931
    +"\n"
    
    932
    +"   The flags that can be specified for F-SETFL are:\n"
    
    933
    +"\n"
    
    934
    +"   FNDELAY         Non-blocking reads.\n"
    
    935
    +"   FAPPEND         Append on each write.\n"
    
    936
    +"   FASYNC          Signal pgrp when data ready.\n"
    
    937
    +"   FCREAT          Create if nonexistant.\n"
    
    938
    +"   FTRUNC          Truncate to zero length.\n"
    
    939
    +"   FEXCL           Error if already created.\n"
    
    940
    +"   "
    
    1139 941
     msgstr ""
    
    1140 942
     
    
    1141 943
     #: src/code/unix.lisp
    
    1142
    -msgid "Error 92"
    
    944
    +msgid ""
    
    945
    +"Unix-pipe sets up a unix-piping mechanism consisting of\n"
    
    946
    +"  an input pipe and an output pipe.  Unix-Pipe returns two\n"
    
    947
    +"  values: if no error occurred the first value is the pipe\n"
    
    948
    +"  to be read from and the second is can be written to.  If\n"
    
    949
    +"  an error occurred the first value is NIL and the second\n"
    
    950
    +"  the unix error code."
    
    1143 951
     msgstr ""
    
    1144 952
     
    
    1145 953
     #: src/code/unix.lisp
    
    1146
    -msgid "Option not supported by protocol"
    
    954
    +msgid ""
    
    955
    +"Unix-read attempts to read from the file described by fd into\n"
    
    956
    +"   the buffer buf until it is full.  Len is the length of the buffer.\n"
    
    957
    +"   The number of bytes actually read is returned or NIL and an error\n"
    
    958
    +"   number if an error occured."
    
    1147 959
     msgstr ""
    
    1148 960
     
    
    1149 961
     #: src/code/unix.lisp
    
    1150
    -msgid "Operation not supported on transport endpoint"
    
    962
    +msgid ""
    
    963
    +"UNIX-READ attempts to read from the file described by fd into\n"
    
    964
    +"   the buffer buf until it is full.  Len is the length of the buffer.\n"
    
    965
    +"   The number of bytes actually read is returned or NIL and an error\n"
    
    966
    +"   number if an error occured."
    
    1151 967
     msgstr ""
    
    1152 968
     
    
    1153 969
     #: src/code/unix.lisp
    
    1154
    -msgid "Cannot assign requested address"
    
    970
    +msgid ""
    
    971
    +"Unix-readlink invokes the readlink system call on the file name\n"
    
    972
    +"  specified by the simple string path.  It returns up to two values:\n"
    
    973
    +"  the contents of the symbolic link if the call is successful, or\n"
    
    974
    +"  NIL and the Unix error number."
    
    1155 975
     msgstr ""
    
    1156 976
     
    
    1157 977
     #: src/code/unix.lisp
    
    1158
    -msgid "Network dropped connection because of reset"
    
    978
    +msgid ""
    
    979
    +"Unix-rename renames the file with string name1 to the string\n"
    
    980
    +"   name2.  NIL and an error code is returned if an error occured."
    
    1159 981
     msgstr ""
    
    1160 982
     
    
    1161 983
     #: src/code/unix.lisp
    
    1162
    -msgid "Transport endpoint is already connected"
    
    984
    +msgid ""
    
    985
    +"Unix-rmdir attempts to remove the directory name.  NIL and\n"
    
    986
    +"   an error number is returned if an error occured."
    
    1163 987
     msgstr ""
    
    1164 988
     
    
    1165 989
     #: src/code/unix.lisp
    
    1166
    -msgid "Transport endpoint is not connected"
    
    990
    +msgid ""
    
    991
    +"Unix-write attempts to write a character buffer (buf) of length\n"
    
    992
    +"   len to the file described by the file descriptor fd.  NIL and an\n"
    
    993
    +"   error is returned if the call is unsuccessful."
    
    1167 994
     msgstr ""
    
    1168 995
     
    
    1169 996
     #: src/code/unix.lisp
    
    1170
    -msgid "Cannot send after socket shutdown"
    
    997
    +msgid ""
    
    998
    +"Define an ioctl command. If the optional ARG and PARM-TYPE are given\n"
    
    999
    +"  then ioctl argument size and direction are included as for ioctls defined\n"
    
    1000
    +"  by _IO, _IOR, _IOW, or _IOWR. If DEV is a character then the ioctl type\n"
    
    1001
    +"  is the characters code, else DEV may be an integer giving the type."
    
    1171 1002
     msgstr ""
    
    1172 1003
     
    
    1173 1004
     #: src/code/unix.lisp
    
    1174
    -msgid "Too many references: cannot splice"
    
    1005
    +msgid ""
    
    1006
    +"Unix-ioctl performs a variety of operations on open i/o\n"
    
    1007
    +"   descriptors.  See the UNIX Programmer's Manual for more\n"
    
    1008
    +"   information."
    
    1175 1009
     msgstr ""
    
    1176 1010
     
    
    1177 1011
     #: src/code/unix.lisp
    
    1178
    -msgid "Stale NFS file handle"
    
    1012
    +msgid "Get terminal attributes."
    
    1179 1013
     msgstr ""
    
    1180 1014
     
    
    1181 1015
     #: src/code/unix.lisp
    
    1182
    -msgid "Resource deadlock would occur"
    
    1016
    +msgid "Set terminal attributes."
    
    1183 1017
     msgstr ""
    
    1184 1018
     
    
    1185 1019
     #: src/code/unix.lisp
    
    1186
    -msgid "Function not implemented"
    
    1020
    +msgid "Get terminal output speed."
    
    1187 1021
     msgstr ""
    
    1188 1022
     
    
    1189 1023
     #: src/code/unix.lisp
    
    1190
    -msgid "Too many symbolic links encountered"
    
    1024
    +msgid ""
    
    1025
    +"Unix-getuid returns the real user-id associated with the\n"
    
    1026
    +"   current process."
    
    1191 1027
     msgstr ""
    
    1192 1028
     
    
    1193 1029
     #: src/code/unix.lisp
    
    1194
    -msgid "Invalid exchange"
    
    1030
    +msgid "Unix-gethostname returns the name of the host machine as a string."
    
    1195 1031
     msgstr ""
    
    1196 1032
     
    
    1197 1033
     #: src/code/unix.lisp
    
    1198
    -msgid "Invalid request descriptor"
    
    1034
    +msgid ""
    
    1035
    +"Unix-gethostid returns a 32-bit integer which provides unique\n"
    
    1036
    +"   identification for the host machine."
    
    1199 1037
     msgstr ""
    
    1200 1038
     
    
    1201 1039
     #: src/code/unix.lisp
    
    1202
    -msgid "Exchange full"
    
    1040
    +msgid ""
    
    1041
    +"Unix-exit terminates the current process with an optional\n"
    
    1042
    +"   error code.  If successful, the call doesn't return.  If\n"
    
    1043
    +"   unsuccessful, the call returns NIL and an error number."
    
    1203 1044
     msgstr ""
    
    1204 1045
     
    
    1205 1046
     #: src/code/unix.lisp
    
    1206
    -msgid "No anode"
    
    1047
    +msgid "Size of control character vector."
    
    1207 1048
     msgstr ""
    
    1208 1049
     
    
    1209 1050
     #: src/code/unix.lisp
    
    1210
    -msgid "Invalid request code"
    
    1051
    +msgid ""
    
    1052
    +"Unix-stat retrieves information about the specified\n"
    
    1053
    +"   file returning them in the form of multiple values.  If the call\n"
    
    1054
    +"   fails, then NIL and an error number is returned.  If the call\n"
    
    1055
    +"   succeeds, then T is returned in addition to the following values\n"
    
    1056
    +"   from the stat struct st:\n"
    
    1057
    +"\n"
    
    1058
    +"     st_dev        Device ID\n"
    
    1059
    +"     st_ino        File serial number\n"
    
    1060
    +"     st_mode       Mode of file\n"
    
    1061
    +"     st_nlink      Number of hard links to the file\n"
    
    1062
    +"     st_uid        User ID\n"
    
    1063
    +"     st_gid        Group ID\n"
    
    1064
    +"     st_rdev       Device ID (if file is character or block special)\n"
    
    1065
    +"     st_atime      Last data access time, in sec\n"
    
    1066
    +"     st_mtime      Last data modification time, in sec\n"
    
    1067
    +"     st_ctime      Last file status change time, in sec\n"
    
    1068
    +"     st_blksize    Preferred I/O block size\n"
    
    1069
    +"     st_blocks     Number of blocks allocated. (Block size is implementation"
    
    1070
    +" dependent.)\n"
    
    1071
    +""
    
    1211 1072
     msgstr ""
    
    1212 1073
     
    
    1213 1074
     #: src/code/unix.lisp
    
    1214
    -msgid "File locking deadlock error"
    
    1075
    +msgid ""
    
    1076
    +"Unix-fstat is similar to unix-stat except the file is specified\n"
    
    1077
    +"   by the file descriptor fd.  If the call fails, then NIL and an\n"
    
    1078
    +"   error number is returned.  If the call succeeds, then T is returned\n"
    
    1079
    +"   in addition to the following values from the stat struct st:\n"
    
    1080
    +"\n"
    
    1081
    +"     st_dev        Device ID\n"
    
    1082
    +"     st_ino        File serial number\n"
    
    1083
    +"     st_mode       Mode of file\n"
    
    1084
    +"     st_nlink      Number of hard links to the file\n"
    
    1085
    +"     st_uid        User ID\n"
    
    1086
    +"     st_gid        Group ID\n"
    
    1087
    +"     st_rdev       Device ID (if file is character or block special)\n"
    
    1088
    +"     st_atime      Last data access time, in sec\n"
    
    1089
    +"     st_mtime      Last data modification time, in sec\n"
    
    1090
    +"     st_ctime      Last file status change time, in sec\n"
    
    1091
    +"     st_blksize    Preferred I/O block size\n"
    
    1092
    +"     st_blocks     Number of blocks allocated. (Block size is implementation"
    
    1093
    +" dependent.)\n"
    
    1094
    +""
    
    1215 1095
     msgstr ""
    
    1216 1096
     
    
    1217 1097
     #: src/code/unix.lisp
    
    1218
    -msgid "Device not a stream"
    
    1098
    +msgid ""
    
    1099
    +"Unix-lstat is similar to unix-stat except the specified\n"
    
    1100
    +"   file must be a symbolic link.  If the call fails, then NIL and an\n"
    
    1101
    +"   error number is returned.  If the call succeeds, then T is returned\n"
    
    1102
    +"   in addition to the following values from the stat struct st:\n"
    
    1103
    +"\n"
    
    1104
    +"     st_dev        Device ID\n"
    
    1105
    +"     st_ino        File serial number\n"
    
    1106
    +"     st_mode       Mode of file\n"
    
    1107
    +"     st_nlink      Number of hard links to the file\n"
    
    1108
    +"     st_uid        User ID\n"
    
    1109
    +"     st_gid        Group ID\n"
    
    1110
    +"     st_rdev       Device ID (if file is character or block special)\n"
    
    1111
    +"     st_atime      Last data access time, in sec\n"
    
    1112
    +"     st_mtime      Last data modification time, in sec\n"
    
    1113
    +"     st_ctime      Last file status change time, in sec\n"
    
    1114
    +"     st_blksize    Preferred I/O block size\n"
    
    1115
    +"     st_blocks     Number of blocks allocated. (Block size is implementation"
    
    1116
    +" dependent.)\n"
    
    1117
    +""
    
    1219 1118
     msgstr ""
    
    1220 1119
     
    
    1221 1120
     #: src/code/unix.lisp
    
    1222
    -msgid "Out of streams resources"
    
    1121
    +msgid "The calling process."
    
    1223 1122
     msgstr ""
    
    1224 1123
     
    
    1225 1124
     #: src/code/unix.lisp
    
    1226
    -msgid "RFS specific error"
    
    1125
    +msgid "Terminated child processes."
    
    1227 1126
     msgstr ""
    
    1228 1127
     
    
    1229 1128
     #: src/code/unix.lisp
    
    1230
    -msgid "Attempting to link in too many shared libraries"
    
    1129
    +msgid ""
    
    1130
    +"Like call getrusage, but return only the system and user time, and returns\n"
    
    1131
    +"   the seconds and microseconds as separate values."
    
    1231 1132
     msgstr ""
    
    1232 1133
     
    
    1233 1134
     #: src/code/unix.lisp
    
    1234
    -msgid "Cannot exec a shared library directly"
    
    1135
    +msgid ""
    
    1136
    +"Unix-getrusage returns information about the resource usage\n"
    
    1137
    +"   of the process specified by who.  Who can be either the\n"
    
    1138
    +"   current process (rusage_self) or all of the terminated\n"
    
    1139
    +"   child processes (rusage_children).  NIL and an error number\n"
    
    1140
    +"   is returned if the call fails."
    
    1235 1141
     msgstr ""
    
    1236 1142
     
    
    1237 1143
     #: src/code/unix.lisp
    
    1238
    -msgid "Illegal byte sequence"
    
    1144
    +msgid "These bits determine file type."
    
    1239 1145
     msgstr ""
    
    1240 1146
     
    
    1241 1147
     #: src/code/unix.lisp
    
    1242
    -msgid "Interrupted system call should be restarted _N"
    
    1148
    +msgid "Directory"
    
    1243 1149
     msgstr ""
    
    1244 1150
     
    
    1245 1151
     #: src/code/unix.lisp
    
    1246
    -msgid "Streams pipe error"
    
    1152
    +msgid "Character device"
    
    1247 1153
     msgstr ""
    
    1248 1154
     
    
    1249 1155
     #: src/code/unix.lisp
    
    1250
    -msgid "Address family not supported by protocol"
    
    1156
    +msgid "FIFO"
    
    1251 1157
     msgstr ""
    
    1252 1158
     
    
    1253 1159
     #: src/code/unix.lisp
    
    1254
    -msgid "Cannot send after transport endpoint shutdown"
    
    1160
    +msgid "Block device"
    
    1255 1161
     msgstr ""
    
    1256 1162
     
    
    1257 1163
     #: src/code/unix.lisp
    
    1258
    -msgid "Structure needs cleaning"
    
    1164
    +msgid "Regular file"
    
    1259 1165
     msgstr ""
    
    1260 1166
     
    
    1261 1167
     #: src/code/unix.lisp
    
    1262
    -msgid "Not a XENIX named type file"
    
    1168
    +msgid "Symbolic link."
    
    1263 1169
     msgstr ""
    
    1264 1170
     
    
    1265 1171
     #: src/code/unix.lisp
    
    1266
    -msgid "No XENIX semaphores available"
    
    1172
    +msgid "Socket."
    
    1267 1173
     msgstr ""
    
    1268 1174
     
    
    1269 1175
     #: src/code/unix.lisp
    
    1270
    -msgid "Is a named type file"
    
    1176
    +msgid "Returns either :file, :directory, :link, :special, or NIL."
    
    1271 1177
     msgstr ""
    
    1272 1178
     
    
    1273 1179
     #: src/code/unix.lisp
    
    1274
    -msgid "Remote I/O error"
    
    1180
    +msgid "Returns the pathname with all symbolic links resolved."
    
    1275 1181
     msgstr ""
    
    1276 1182
     
    
    1277 1183
     #: src/code/unix.lisp
    
    1278
    -msgid "Quota exceeded"
    
    1184
    +msgid "Error reading link ~S: ~S"
    
    1279 1185
     msgstr ""
    
    1280 1186
     
    
    1281 1187
     #: src/code/unix.lisp
    
    ... ... @@ -1284,10 +1190,6 @@ msgid ""
    1284 1190
     "  UNIX system call."
    
    1285 1191
     msgstr ""
    
    1286 1192
     
    
    1287
    -#: src/code/unix.lisp
    
    1288
    -msgid "Unknown error [~d]"
    
    1289
    -msgstr ""
    
    1290
    -
    
    1291 1193
     #: src/code/unix.lisp
    
    1292 1194
     msgid ""
    
    1293 1195
     "Perform the UNIX select(2) system call.\n"
    
    ... ... @@ -1419,8 +1321,8 @@ msgstr ""
    1419 1321
     
    
    1420 1322
     #: src/code/unix.lisp
    
    1421 1323
     msgid ""
    
    1422
    -"Set all the categories of the locale from the values of the\n"
    
    1423
    -"  environment variables using setlocale(LC_ALL, \"\").\n"
    
    1324
    +"Set all the categories of the locale according to the values of\n"
    
    1325
    +"  the environment variables by calling setlocale(LC_ALL, \"\").\n"
    
    1424 1326
     "\n"
    
    1425 1327
     "  Returns 0 on success and -1 if setlocale failed."
    
    1426 1328
     msgstr ""
    
    ... ... @@ -1436,3 +1338,24 @@ msgstr ""
    1436 1338
     msgid "Get the codeset from the locale"
    
    1437 1339
     msgstr ""
    
    1438 1340
     
    
    1341
    +#: src/code/unix.lisp
    
    1342
    +msgid ""
    
    1343
    +"Generates a unique temporary file name from TEMPLATE, and creates\n"
    
    1344
    +"  and opens the file.  On success, the corresponding file descriptor\n"
    
    1345
    +"  and name of the file is returned.\n"
    
    1346
    +"\n"
    
    1347
    +" The last six characters of the template must be \"XXXXXX\"."
    
    1348
    +msgstr ""
    
    1349
    +
    
    1350
    +#: src/code/unix.lisp
    
    1351
    +msgid ""
    
    1352
    +"Generate a uniquely named temporary directory from Template,\n"
    
    1353
    +"  which must have \"XXXXXX\" as the last six characters.  The\n"
    
    1354
    +"  directory is created with permissions 0700.  The name of the\n"
    
    1355
    +"  directory is returned."
    
    1356
    +msgstr ""
    
    1357
    +
    
    1358
    +#: src/code/unix.lisp
    
    1359
    +msgid "Returns a string that describes the error code Errno"
    
    1360
    +msgstr ""
    
    1361
    +

  • src/i18n/locale/cmucl.pot
    ... ... @@ -9300,6 +9300,13 @@ msgid ""
    9300 9300
     "  external format."
    
    9301 9301
     msgstr ""
    
    9302 9302
     
    
    9303
    +#: src/code/extfmts.lisp
    
    9304
    +msgid ""
    
    9305
    +"Compute the number of octets needed to convert String using the\n"
    
    9306
    +"  specified External-format.  The string is bound by Start (defaulting\n"
    
    9307
    +"  to 0) and End (defaulting to the end of the string)."
    
    9308
    +msgstr ""
    
    9309
    +
    
    9303 9310
     #: src/code/extfmts.lisp
    
    9304 9311
     msgid ""
    
    9305 9312
     "Encode the given String using External-Format and return a new\n"
    

  • src/pcl/simple-streams/external-formats/ascii.lisp
    ... ... @@ -33,5 +33,15 @@ replaced with a question mark.")
    33 33
     			  (declare (optimize (ext:inhibit-warnings 3)))
    
    34 34
     			(funcall ,error "Cannot output codepoint #x~X to ASCII stream" ,code))
    
    35 35
     		      #x3F)
    
    36
    -		  ,code))))
    
    36
    +		  ,code)))
    
    37
    +  ()
    
    38
    +  ()
    
    39
    +  (octet-count (code state error)
    
    40
    +    `(if (> ,code #x7f)
    
    41
    +	 (if ,error
    
    42
    +	     (locally
    
    43
    +		 (declare (optimize (ext:inhibit-warnings 3)))
    
    44
    +	       (funcall ,error "Cannot output codepoint #x~X to ASCII stream" ,code))
    
    45
    +	     1)
    
    46
    +	 1)))
    
    37 47
     

  • src/pcl/simple-streams/external-formats/euc-kr.lisp
    ... ... @@ -1007,4 +1007,16 @@ character and illegal outputs are replaced by a question mark.")
    1007 1007
     		 (t
    
    1008 1008
     		  (if ,error
    
    1009 1009
     		      (funcall ,error "Cannot output codepoint #x~X to EUC-KR format." ,code)
    
    1010
    -		      (,output #X3f))))))))
    1010
    +		      (,output #X3f)))))))
    
    1011
    +  ()
    
    1012
    +  ()
    
    1013
    +  (octet-count (code state error present)
    
    1014
    +    `(if (<= ,code #x7f)
    
    1015
    +	 1
    
    1016
    +	 (let ((,present (get-inverse ,itable ,code)))
    
    1017
    +	   (cond (,present
    
    1018
    +		  2)
    
    1019
    +		 (t
    
    1020
    +		  (if ,error
    
    1021
    +		      (funcall ,error "Cannot output codepoint #x~X to EUC-KR format." ,code)
    
    1022
    +		      1)))))))

  • src/pcl/simple-streams/external-formats/iso8859-1.lisp
    ... ... @@ -31,4 +31,17 @@ character and illegal outputs are replaced by a question mark.")
    31 31
     		     (funcall ,error "Cannot output codepoint #x~X to ISO8859-1 stream"
    
    32 32
     			      ,code 1))
    
    33 33
     		      #x3F)
    
    34
    -		  ,code))))
    34
    +		  ,code)))
    
    35
    +  ()
    
    36
    +  ()
    
    37
    +  (octet-count (code state error)
    
    38
    +    `(if (> ,code 255)
    
    39
    +	 (if ,error
    
    40
    +	     (locally
    
    41
    +		 ;; No warnings about fdefinition
    
    42
    +		 (declare (optimize (ext:inhibit-warnings 3)))
    
    43
    +	       (funcall ,error
    
    44
    +			(intl:gettext "Cannot output codepoint #x~X to ISO8859-1 stream")
    
    45
    +			,code 1))
    
    46
    +	     1)
    
    47
    +	 1)))

  • src/pcl/simple-streams/external-formats/iso8859-2.lisp
    ... ... @@ -47,4 +47,19 @@ character and illegal outputs are replaced by a question mark.")
    47 47
     				(declare (optimize (ext:inhibit-warnings 3)))
    
    48 48
     			      (funcall ,error "Cannot output codepoint #x~X to ISO8859-2 stream"
    
    49 49
     				       ,code))
    
    50
    -			    #x3F)))))))
    50
    +			    #x3F))))))
    
    51
    +  ()
    
    52
    +  ()
    
    53
    +  (octet-count (code state error present)
    
    54
    +    `(if (< ,code 160)
    
    55
    +	 1
    
    56
    +	 (let ((,present (get-inverse ,itable ,code)))
    
    57
    +	   (if ,present
    
    58
    +	       1
    
    59
    +	       (if ,error
    
    60
    +		   (locally
    
    61
    +		       ;; No warnings about fdefinition
    
    62
    +		       (declare (optimize (ext:inhibit-warnings 3)))
    
    63
    +		     (funcall ,error "Cannot output codepoint #x~X to ISO8859-2 stream"
    
    64
    +			      ,code))
    
    65
    +		   1))))))

  • src/pcl/simple-streams/external-formats/mac-roman.lisp
    ... ... @@ -49,4 +49,19 @@ character and illegal outputs are replaced by a question mark.")
    49 49
     				(declare (optimize (ext:inhibit-warnings 3)))
    
    50 50
     			      (funcall ,error "Cannot output codepoint #x~X to MAC-ROMAN stream"
    
    51 51
     				       ,code))
    
    52
    -			    #x3F)))))))
    52
    +			    #x3F))))))
    
    53
    +  ()
    
    54
    +  ()
    
    55
    +  (octet-count (code state error present)
    
    56
    +    `(if (< ,code 128)
    
    57
    +	 1
    
    58
    +	 (let ((,present (get-inverse ,itable ,code)))
    
    59
    +	   (if ,present
    
    60
    +	       1
    
    61
    +	       (if ,error
    
    62
    +		   (locally
    
    63
    +		       ;; No warnings about fdefinition
    
    64
    +		       (declare (optimize (ext:inhibit-warnings 3)))
    
    65
    +		     (funcall ,error "Cannot output codepoint #x~X to MAC-ROMAN stream"
    
    66
    +			      ,code))
    
    67
    +		   1))))))

  • src/pcl/simple-streams/external-formats/utf-16-be.lisp
    ... ... @@ -110,4 +110,12 @@ Unicode replacement character.")
    110 110
       (copy-state (state)
    
    111 111
         ;; The state is either NIL or a codepoint, so nothing really
    
    112 112
         ;; special is needed to copy it.
    
    113
    -    `(progn ,state)))
    113
    +    `(progn ,state))
    
    114
    +  (octet-count (code state error)
    
    115
    +    `(cond ((< ,code #x10000)
    
    116
    +	    2)
    
    117
    +	   ((< ,code #x110000)
    
    118
    +	    4)
    
    119
    +	   (t
    
    120
    +	    ;; Replacement character is 2 octets
    
    121
    +	    2))))

  • src/pcl/simple-streams/external-formats/utf-16-le.lisp
    ... ... @@ -111,4 +111,12 @@ Unicode replacement character.")
    111 111
       (copy-state (state)
    
    112 112
         ;; The state is either NIL or a codepoint, so nothing really
    
    113 113
         ;; special is needed.
    
    114
    -    `(progn ,state)))
    114
    +    `(progn ,state))
    
    115
    +  (octet-count (code state error)
    
    116
    +    `(cond ((< ,code #x10000)
    
    117
    +	    2)
    
    118
    +	   ((< ,code #x110000)
    
    119
    +	    4)
    
    120
    +	   (t
    
    121
    +	    ;; Replacement character is 2 octets
    
    122
    +	    2))))

  • src/pcl/simple-streams/external-formats/utf-16.lisp
    ... ... @@ -156,4 +156,18 @@ Unicode replacement character.")
    156 156
     		    ,c))))))
    
    157 157
       (copy-state (state)
    
    158 158
         ;; The state is list. Copy it
    
    159
    -    `(copy-list ,state)))
    159
    +	      `(copy-list ,state))
    
    160
    +  (octet-count (code state error)
    
    161
    +    `(let ((bom-count 0))
    
    162
    +       (unless ,state
    
    163
    +	 ;; Output BOM
    
    164
    +	 (setf bom-count 2)
    
    165
    +	 (setf ,state t))
    
    166
    +       (+ bom-count
    
    167
    +	  (cond ((< ,code #x10000)
    
    168
    +		 2)
    
    169
    +		((< ,code #x110000)
    
    170
    +		 4)
    
    171
    +		(t
    
    172
    +		 ;; Replacement character is 2 octets
    
    173
    +		 2))))))

  • src/pcl/simple-streams/external-formats/utf-32-be.lisp
    ... ... @@ -61,4 +61,18 @@ Unicode replacement character.")
    61 61
     				  ,code))
    
    62 62
     		       +replacement-character-code+)))
    
    63 63
     	     (t
    
    64
    -	      (out ,code))))))
    64
    +	      (out ,code)))))
    
    65
    +  ()
    
    66
    +  ()
    
    67
    +  (octet-count (code state error)
    
    68
    +    `(cond ((lisp::surrogatep ,code)
    
    69
    +	    (if ,error
    
    70
    +		(locally
    
    71
    +		    ;; No warnings about fdefinition
    
    72
    +		    (declare (optimize (ext:inhibit-warnings 3)))
    
    73
    +		  (funcall ,error "Surrogate code #x~4,'0X is illegal for UTF32 output"
    
    74
    +			   ,code))
    
    75
    +		;; Replacement character is 2 octets
    
    76
    +		2))
    
    77
    +	   (t
    
    78
    +	    4))))

  • src/pcl/simple-streams/external-formats/utf-32-le.lisp
    ... ... @@ -62,4 +62,18 @@ Unicode replacement character.")
    62 62
     				  ,code))
    
    63 63
     		       +replacement-character-code+)))
    
    64 64
     	     (t
    
    65
    -	      (out ,code))))))
    65
    +	      (out ,code)))))
    
    66
    +  ()
    
    67
    +  ()
    
    68
    +  (octet-count (code state error)
    
    69
    +    `(cond ((lisp::surrogatep ,code)
    
    70
    +	    (if ,error
    
    71
    +		(locally
    
    72
    +		    ;; No warnings about fdefinition
    
    73
    +		    (declare (optimize (ext:inhibit-warnings 3)))
    
    74
    +		  (funcall ,error "Surrogate code #x~4,'0X is illegal for UTF32 output"
    
    75
    +			   ,code))
    
    76
    +		;; Replacement character is 2 octets
    
    77
    +		2))
    
    78
    +	   (t
    
    79
    +	    4))))

  • src/pcl/simple-streams/external-formats/utf-32.lisp
    ... ... @@ -114,4 +114,20 @@ Unicode replacement character.")
    114 114
       nil
    
    115 115
       (copy-state (state)
    
    116 116
         ;; The state is either NIL or T, so we can just return that.
    
    117
    -    `(progn ,state)))
    117
    +    `(progn ,state))
    
    118
    +  (octet-count (code state error)
    
    119
    +    `(let ((bom-count 0))
    
    120
    +       (unless ,state
    
    121
    +	 (setf bom-count 4)
    
    122
    +	 (setf ,state t))
    
    123
    +       (cond ((lisp::surrogatep ,code)
    
    124
    +	      (if ,error
    
    125
    +		  (locally
    
    126
    +		      ;; No warnings about fdefinition
    
    127
    +		      (declare (optimize (ext:inhibit-warnings 3)))
    
    128
    +		    (funcall ,error "Surrogate code #x~4,'0X is illegal for UTF32 output"
    
    129
    +			     ,code))
    
    130
    +		  ;; Replacement character is 2 octets
    
    131
    +		  (+ 2 bom-count)))
    
    132
    +	     (t
    
    133
    +	      (+ 4 bom-count))))))

  • src/pcl/simple-streams/external-formats/utf-8.lisp
    ... ... @@ -127,4 +127,14 @@ replacement character.")
    127 127
              ((< ,code #x800) (utf8 ,code 1))
    
    128 128
              ((< ,code #x10000) (utf8 ,code 2))
    
    129 129
              ((< ,code #x110000) (utf8 ,code 3))
    
    130
    -         (t (error "How did this happen?  Codepoint U+~X is illegal" ,code))))))
    130
    +         (t (error "How did this happen?  Codepoint U+~X is illegal" ,code)))))
    
    131
    +  ()
    
    132
    +  ()
    
    133
    +  (octet-count (code state error)
    
    134
    +    `(locally
    
    135
    +	 (declare (optimize (ext:inhibit-warnings 3)))
    
    136
    +       (cond ((< ,code #x80) 1)
    
    137
    +             ((< ,code #x800) 2)
    
    138
    +             ((< ,code #x10000) 3)
    
    139
    +             ((< ,code #x110000) 4)
    
    140
    +             (t (error "How did this happen?  Codepoint U+~X is illegal" ,code))))))

  • src/tools/worldbuild.lisp
    ... ... @@ -135,11 +135,8 @@
    135 135
         "target:code/alieneval"
    
    136 136
         "target:code/c-call"
    
    137 137
         "target:code/sap"
    
    138
    +    "target:code/unix-errno"
    
    138 139
         "target:code/unix"
    
    139
    -    ,@(when (or (c:backend-featurep :linux))
    
    140
    -	;; This is currently only available for some OSes.  Ideally,
    
    141
    -	;; it should be available for all OSes.
    
    142
    -	'("target:code/unix-errno"))
    
    143 140
         ,@(when (c:backend-featurep :mach)
    
    144 141
     	'("target:code/mach"
    
    145 142
     	  "target:code/mach-os"))
    

  • src/tools/worldcom.lisp
    ... ... @@ -162,11 +162,8 @@
    162 162
     (comf "target:code/string")
    
    163 163
     (comf "target:code/mipsstrops")
    
    164 164
     
    
    165
    +(comf "target:code/unix-errno" :proceed t)
    
    165 166
     (comf "target:code/unix" :proceed t)
    
    166
    -(when (or (c:backend-featurep :linux))
    
    167
    -  ;; This is currently only available for some OSes.  Ideally, it
    
    168
    -  ;; should be available for all OSes.
    
    169
    -  (comf "target:code/unix-errno" :proceed t))
    
    170 167
     
    
    171 168
     (when (c:backend-featurep :mach)
    
    172 169
       (comf "target:code/mach")
    

  • tests/external-formats.lisp
    1
    +;;; Tests for external formats
    
    2
    +
    
    3
    +(defpackage :external-formats-tests
    
    4
    +  (:use :cl :lisp-unit))
    
    5
    +
    
    6
    +(in-package "EXTERNAL-FORMATS-TESTS")
    
    7
    +
    
    8
    +(defparameter *test-iso8859-1*
    
    9
    +  (let ((rs (kernel::make-random-object :state (kernel::init-random-state 27182828))))
    
    10
    +    (lisp::codepoints-string
    
    11
    +     (loop for k from 0 below 1000
    
    12
    +	   collect (random 256 rs))))
    
    13
    +  "Random test string with ISO8859-1 characters")
    
    14
    +
    
    15
    +(defparameter *test-unicode*
    
    16
    +  (let ((rs (kernel::make-random-object :state (kernel::init-random-state 27182828))))
    
    17
    +    (lisp::codepoints-string
    
    18
    +     (loop for k from 0 below 1000
    
    19
    +	   collect (random 20000 rs))))
    
    20
    +  "Random test string with codepoints below 20000")
    
    21
    +
    
    22
    +
    
    23
    +
    
    24
    +(defmacro test-octet-count (string format)
    
    25
    +  "Test that STRING-OCTET-COUNT returns the correct number of octets"
    
    26
    +  ;; We expect STRING-OCTET-COUNT returns the same number of octets
    
    27
    +  ;; that are produced by STRING-TO-OCTETS.
    
    28
    +  `(multiple-value-bind (octets count converted)
    
    29
    +       (stream:string-to-octets ,string :external-format ,format)
    
    30
    +     ;; While we're at it, make sure that the length of the octet
    
    31
    +     ;; buffer matches returned count.  And make sure we converted all
    
    32
    +     ;; the characters in the string.
    
    33
    +     (assert-equal (length octets) count)
    
    34
    +     (assert-equal (length ,string) converted)
    
    35
    +     ;; Finally, make sure that STRING-OCTET-COUNT returns the same
    
    36
    +     ;; number of octets from STRING-TO-OCTETS.
    
    37
    +     (assert-equal (length octets)
    
    38
    +		   (stream::string-octet-count ,string :external-format ,format))))
    
    39
    +
    
    40
    +(define-test octet-count.iso8859-1
    
    41
    +    (:tag :octet-count)
    
    42
    +  (test-octet-count *test-iso8859-1* :iso8859-1))
    
    43
    +
    
    44
    +(define-test octet-count.ascii
    
    45
    +    (:tag :octet-count)
    
    46
    +  (test-octet-count *test-iso8859-1* :ascii))
    
    47
    +
    
    48
    +(define-test octet-count.ascii.error
    
    49
    +    (:tag :octet-count)
    
    50
    +  (assert-error 'simple-error
    
    51
    +		(stream::string-octet-count *test-iso8859-1*
    
    52
    +					    :external-format :ascii
    
    53
    +					    :error 'error)))
    
    54
    +
    
    55
    +(define-test octet-count.utf-8
    
    56
    +    (:tag :octet-count)
    
    57
    +  (test-octet-count *test-unicode* :utf-8))
    
    58
    +
    
    59
    +(define-test octet-count.utf-16
    
    60
    +    (:tag :octet-count)
    
    61
    +  (test-octet-count *test-unicode* :utf-16))
    
    62
    +
    
    63
    +(define-test octet-count.utf-16-be
    
    64
    +    (:tag :octet-count)
    
    65
    +  (test-octet-count *test-unicode* :utf-16-be))
    
    66
    +
    
    67
    +(define-test octet-count.utf-16-le
    
    68
    +    (:tag :octet-count)
    
    69
    +  (test-octet-count *test-unicode* :utf-16-le))
    
    70
    +
    
    71
    +(define-test octet-count.utf-32
    
    72
    +    (:tag :octet-count)
    
    73
    +  (test-octet-count *test-unicode* :utf-32))
    
    74
    +
    
    75
    +(define-test octet-count.utf-32-le
    
    76
    +    (:tag :octet-count)
    
    77
    +  (test-octet-count *test-unicode* :utf-32-le))
    
    78
    +
    
    79
    +(define-test octet-count.utf-32-le
    
    80
    +    (:tag :octet-count)
    
    81
    +  (test-octet-count *test-unicode* :utf-32-le))
    
    82
    +
    
    83
    +(define-test octet-count.euc-kr
    
    84
    +    (:tag :octet-count)
    
    85
    +  (test-octet-count *test-unicode* :euc-kr))
    
    86
    +
    
    87
    +(define-test octet-count.iso8859-2
    
    88
    +    (:tag :octet-count)
    
    89
    +  (test-octet-count *test-iso8859-1* :iso8859-2))
    
    90
    +
    
    91
    +(define-test octet-count.iso8859-3
    
    92
    +    (:tag :octet-count)
    
    93
    +  (test-octet-count *test-iso8859-1* :iso8859-3))
    
    94
    +
    
    95
    +(define-test octet-count.iso8859-4
    
    96
    +    (:tag :octet-count)
    
    97
    +  (test-octet-count *test-iso8859-1* :iso8859-4))
    
    98
    +
    
    99
    +(define-test octet-count.iso8859-5
    
    100
    +    (:tag :octet-count)
    
    101
    +  (test-octet-count *test-iso8859-1* :iso8859-5))
    
    102
    +
    
    103
    +(define-test octet-count.iso8859-6
    
    104
    +    (:tag :octet-count)
    
    105
    +  (test-octet-count *test-iso8859-1* :iso8859-6))
    
    106
    +
    
    107
    +(define-test octet-count.iso8859-7
    
    108
    +    (:tag :octet-count)
    
    109
    +  (test-octet-count *test-iso8859-1* :iso8859-7))
    
    110
    +
    
    111
    +(define-test octet-count.iso8859-8
    
    112
    +    (:tag :octet-count)
    
    113
    +  (test-octet-count *test-iso8859-1* :iso8859-8))
    
    114
    +
    
    115
    +(define-test octet-count.iso8859-10
    
    116
    +    (:tag :octet-count)
    
    117
    +  (test-octet-count *test-iso8859-1* :iso8859-10))
    
    118
    +
    
    119
    +(define-test octet-count.iso8859-13
    
    120
    +    (:tag :octet-count)
    
    121
    +  (test-octet-count *test-iso8859-1* :iso8859-13))
    
    122
    +
    
    123
    +(define-test octet-count.iso8859-14
    
    124
    +    (:tag :octet-count)
    
    125
    +  (test-octet-count *test-iso8859-1* :iso8859-14))
    
    126
    +
    
    127
    +(define-test octet-count.iso8859-15
    
    128
    +    (:tag :octet-count)
    
    129
    +  (test-octet-count *test-iso8859-1* :iso8859-15))
    
    130
    +
    
    131
    +(define-test octet-count.mac-roman
    
    132
    +    (:tag :octet-count)
    
    133
    +  (test-octet-count *test-iso8859-1* :mac-roman))
    
    134
    +  
    
    135
    +