]> Dogcows Code - chaz/tar/blobdiff - src/misc.c
Started merging with cpio into paxutils.
[chaz/tar] / src / misc.c
index bae6cfc1ef0a092d83133d763d35512086048ef8..51561e4dc9c770dc4eb6e5450555ba5b709c75fc 100644 (file)
@@ -17,8 +17,8 @@
    with this program; if not, write to the Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
-#include "system.h"
-#include "rmt.h"
+#include <system.h>
+#include <rmt.h>
 #include "common.h"
 #include <quotearg.h>
 #include <save-cwd.h>
@@ -123,13 +123,13 @@ unquote_string (char *string)
          source++;
          break;
 
-       case 'n':
-         *destination++ = '\n';
+       case 'a':
+         *destination++ = '\a';
          source++;
          break;
-
-       case 't':
-         *destination++ = '\t';
+         
+       case 'b':
+         *destination++ = '\b';
          source++;
          break;
 
@@ -138,8 +138,8 @@ unquote_string (char *string)
          source++;
          break;
 
-       case 'b':
-         *destination++ = '\b';
+       case 'n':
+         *destination++ = '\n';
          source++;
          break;
 
@@ -148,6 +148,16 @@ unquote_string (char *string)
          source++;
          break;
 
+       case 't':
+         *destination++ = '\t';
+         source++;
+         break;
+
+       case 'v':
+         *destination++ = '\v';
+         source++;
+         break;
+         
        case '?':
          *destination++ = 0177;
          source++;
@@ -207,7 +217,7 @@ static char *after_backup_name;
 static bool
 must_be_dot_or_slash (char const *file_name)
 {
-  file_name += FILESYSTEM_PREFIX_LEN (file_name);
+  file_name += FILE_SYSTEM_PREFIX_LEN (file_name);
 
   if (ISSLASH (file_name[0]))
     {
@@ -916,18 +926,29 @@ xpipe (int fd[2])
     call_arg_fatal ("pipe", _("interprocess channel"));
 }
 
-/* Return an unambiguous printable representation, allocated in slot N,
-   for NAME, suitable for diagnostics.  */
-char const *
-quote_n (int n, char const *name)
+/* Return PTR, aligned upward to the next multiple of ALIGNMENT.
+   ALIGNMENT must be nonzero.  The caller must arrange for ((char *)
+   PTR) through ((char *) PTR + ALIGNMENT - 1) to be addressable
+   locations.  */
+
+static inline void *
+ptr_align (void *ptr, size_t alignment)
 {
-  return quotearg_n_style (n, locale_quoting_style, name);
+  char *p0 = ptr;
+  char *p1 = p0 + alignment - 1;
+  return p1 - (size_t) p1 % alignment;
 }
 
-/* Return an unambiguous printable representation of NAME, suitable
-   for diagnostics.  */
-char const *
-quote (char const *name)
+/* Return the address of a page-aligned buffer of at least SIZE bytes.
+   The caller should free *PTR when done with the buffer.  */
+
+void *
+page_aligned_alloc (void **ptr, size_t size)
 {
-  return quote_n (0, name);
+  size_t alignment = getpagesize ();
+  size_t size1 = size + alignment;
+  if (size1 < size)
+    xalloc_die ();
+  *ptr = xmalloc (size1);
+  return ptr_align (*ptr, alignment);
 }
This page took 0.027156 seconds and 4 git commands to generate.