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

Commits:

2 changed files:

Changes:

  • src/code/unix.lisp
    ... ... @@ -2871,7 +2871,10 @@
    2871 2871
       (int-syscall ("fork")))
    
    2872 2872
     
    
    2873 2873
     (defun unix-setlocale ()
    
    2874
    -  _N"Call setlocale(3c) with fixed args.  Returns 0 on success."
    
    2874
    +  _N"Set all the categories of the locale according to the values of
    
    2875
    +  the environment variables by calling setlocale(LC_ALL, \"\").
    
    2876
    +
    
    2877
    +  Returns 0 on success and -1 if setlocale failed."
    
    2875 2878
       (alien:alien-funcall
    
    2876 2879
        (alien:extern-alien "os_setlocale"
    
    2877 2880
     		       (function c-call:int))))
    
    ... ... @@ -2899,6 +2902,35 @@
    2899 2902
     			  (function (* char))))
    
    2900 2903
     	c-string))
    
    2901 2904
     
    
    2905
    +(defun unix-mkstemp (template)
    
    2906
    +  _N"Generates a unique temporary file name from TEMPLATE, and creates
    
    2907
    +  and opens the file.  On success, the corresponding file descriptor
    
    2908
    +  and name of the file is returned.
    
    2909
    +
    
    2910
    + The last six characters of the template must be \"XXXXXX\"."
    
    2911
    +  ;; Hope this buffer is large enough!
    
    2912
    +  (let ((octets (%name->file template)))
    
    2913
    +    (syscall ("mkstemp" c-call:c-string)
    
    2914
    +	       (values result
    
    2915
    +		       ;; Convert the file name back to a Lisp string.
    
    2916
    +		       (%file->name octets))
    
    2917
    +	       octets)))
    
    2918
    +
    
    2919
    +(defun unix-mkdtemp (template)
    
    2920
    +  _N"Generate a uniquely named temporary directory from Template,
    
    2921
    +  which must have \"XXXXXX\" as the last six characters.  The
    
    2922
    +  directory is created with permissions 0700.  The name of the
    
    2923
    +  directory is returned."
    
    2924
    +  (let* ((octets (%name->file template))
    
    2925
    +	 (result (alien-funcall
    
    2926
    +		  (extern-alien "mkdtemp"
    
    2927
    +				(function (* char)
    
    2928
    +					  c-call:c-string))
    
    2929
    +		  octets)))
    
    2930
    +    (if (null-alien result)
    
    2931
    +	(values nil (unix-errno))
    
    2932
    +	(%file->name octets))))
    
    2933
    +
    
    2902 2934
     (defun unix-strerror (errno)
    
    2903 2935
       _N"Returns a string that describes the error code Errno"
    
    2904 2936
       (cast
    

  • src/i18n/locale/cmucl-unix.pot
    ... ... @@ -1418,7 +1418,11 @@ msgid ""
    1418 1418
     msgstr ""
    
    1419 1419
     
    
    1420 1420
     #: src/code/unix.lisp
    
    1421
    -msgid "Call setlocale(3c) with fixed args.  Returns 0 on success."
    
    1421
    +msgid ""
    
    1422
    +"Set all the categories of the locale from the values of the\n"
    
    1423
    +"  environment variables using setlocale(LC_ALL, \"\").\n"
    
    1424
    +"\n"
    
    1425
    +"  Returns 0 on success and -1 if setlocale failed."
    
    1422 1426
     msgstr ""
    
    1423 1427
     
    
    1424 1428
     #: src/code/unix.lisp