[Git][cmucl/cmucl][issue-130-file-author-in-c] 4 commits: Reindent according to cmucl style

Raymond Toy (@rtoy) gitlab at common-lisp.net
Mon Sep 5 22:17:02 UTC 2022



Raymond Toy pushed to branch issue-130-file-author-in-c at cmucl / cmucl


Commits:
6557e832 by Raymond Toy at 2022-09-05T14:45:35-07:00
Reindent according to cmucl style

- - - - -
08b38701 by Raymond Toy at 2022-09-05T14:50:40-07:00
Apply suggested change to test for zero length.

- - - - -
3a41b05c by Raymond Toy at 2022-09-05T14:54:16-07:00
Add a few comments

- - - - -
c4a9d0d8 by Raymond Toy at 2022-09-05T15:16:43-07:00
Add assert.h and replace ARRAYSIZE with sizeof

We need to include assert.h to define the `assert` macro that we use.

`ARRAYSIZE` needs to be replaced with `sizeof` to compute the size of
the `initial` buffer.

- - - - -


2 changed files:

- src/code/filesys.lisp
- src/lisp/os-common.c


Changes:

=====================================
src/code/filesys.lisp
=====================================
@@ -1078,7 +1078,7 @@ optionally keeping some of the most recent old versions."
 	;; unix-namestring converts "." to "".  Convert it back to
 	;; "." so we can stat the current directory.  (Perhaps
 	;; that's a bug in unix-namestring?)
-	(when (string= name "")
+	(when (zerop (length name))
 	  (setf name "."))
 	(let (author)
 	  (unwind-protect


=====================================
src/lisp/os-common.c
=====================================
@@ -5,6 +5,7 @@
 
 */
 
+#include <assert.h>
 #include <errno.h>
 #include <math.h>
 #include <netdb.h>
@@ -738,31 +739,43 @@ os_file_author(const char *path)
     if (stat(path, &sb) != 0) {
         return NULL;
     }
+
     result = NULL;
     buffer = initial;
-    size = ARRAYSIZE(initial);
-    assert(sysconf(_SC_GETPW_R_SIZE_MAX) <= 16384));
+    size = sizeof(initial) / sizeof(initial[0]);
+
+    /*
+     * Assume a buffer of size 16384 is enough to for getpwuid_r to do
+     * it's thing.
+     */
+    assert(sysconf(_SC_GETPW_R_SIZE_MAX) <= 16384);
+
+    /*
+     * Keep trying with larger buffers until a maximum is reached.
+     */
     while (size <= 16384) {
         switch (getpwuid_r(sb.st_uid, &pwd, buffer, size, &ppwd)) {
-        case 0:
-            /* Success, though we might not have a matching entry */
-            result = (ppwd == NULL) ? NULL : strdup(pwd.pw_name);
-            goto exit;
-        case ERANGE:
-            /* Buffer is too small, double its size and try again */
-            size *= 2;
-            obuffer = (buffer == initial) ? NULL : buffer;
-            if ((buffer = realloc(obuffer, size)) == NULL) {
-                free(obuffer); 
-                goto exit;
-            }
-            continue;
-        default:
-            /* All other errors */
-            goto exit;
+          case 0:
+              /* Success, though we might not have a matching entry */
+              result = (ppwd == NULL) ? NULL : strdup(pwd.pw_name);
+              goto exit;
+          case ERANGE:
+              /* Buffer is too small, double its size and try again */
+              size *= 2;
+              obuffer = (buffer == initial) ? NULL : buffer;
+              if ((buffer = realloc(obuffer, size)) == NULL) {
+                  free(obuffer); 
+                  goto exit;
+              }
+              continue;
+          default:
+              /* All other errors */
+              goto exit;
         }
     }
 exit:
+    fprintf(stderr, "buffer, initial = %p %p\n", buffer, initial);
+    
     free(buffer);
     return result;
 }



View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/518ef95922f48ff2e2908786ad1848427b93267b...c4a9d0d8431101fcd0276624e2d27272b21971f2

-- 
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/518ef95922f48ff2e2908786ad1848427b93267b...c4a9d0d8431101fcd0276624e2d27272b21971f2
You're receiving this email because of your account on gitlab.common-lisp.net.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20220905/63c9a04b/attachment-0001.html>


More information about the cmucl-cvs mailing list