New API: get-umask, returns the current umask (RHBZ#582891).
authorRichard Jones <rjones@redhat.com>
Sat, 17 Apr 2010 12:07:56 +0000 (13:07 +0100)
committerRichard Jones <rjones@redhat.com>
Sat, 17 Apr 2010 12:07:56 +0000 (13:07 +0100)
daemon/umask.c
src/MAX_PROC_NR
src/generator.ml

index 22d2cc9..a9ddeab 100644 (file)
@@ -44,3 +44,20 @@ do_umask (int mask)
 
   return r;
 }
+
+int
+do_get_umask (void)
+{
+  int r;
+
+  r = umask (022);
+  if (r == -1) {
+    reply_with_perror ("umask");
+    return -1;
+  }
+
+  /* Restore the umask, since the call above corrupted it. */
+  umask (r);
+
+  return r;
+}
index b4249c4..eb08bc0 100644 (file)
@@ -1 +1 @@
-239
+240
index b97584a..61323a9 100755 (executable)
@@ -3034,7 +3034,8 @@ The default umask is C<022>.  This is important because it
 means that directories and device nodes will be created with
 C<0644> or C<0755> mode even if you specify C<0777>.
 
-See also L<umask(2)>, C<guestfs_mknod>, C<guestfs_mkdir>.
+See also C<guestfs_get_umask>,
+L<umask(2)>, C<guestfs_mknod>, C<guestfs_mkdir>.
 
 This call returns the previous umask.");
 
@@ -4484,6 +4485,14 @@ group.");
 Set the value associated with C<path> to C<NULL>.  This
 is the same as the L<augtool(1)> C<clear> command.");
 
+  ("get_umask", (RInt "mask", []), 240, [FishOutput FishOutputOctal],
+   [InitEmpty, Always, TestOutputInt (
+      [["get_umask"]], 0o22)],
+   "get the current umask",
+   "\
+Return the current umask.  By default the umask is C<022>
+unless it has been set by calling C<guestfs_umask>.");
+
 ]
 
 let all_functions = non_daemon_functions @ daemon_functions