⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tar-1.12.patch

📁 开源备份软件源码 AMANDA, the Advanced Maryland Automatic Network Disk Archiver, is a backup system that a
💻 PATCH
字号:
The first hunk in this file was submitted by Craig Wiegert<wiegert@quintessence.uchicago.edu>.  It fixed a problem that causesGNUTAR to issue error messages like the following for sparse files:> /bin/tar: Read error at byte 0, reading 512 bytes, in file ./var/log/lastlog: Bad file numberThe others fix an estimate problem in GNUTAR on SunOS 4.1.3, HP/UX andother systems whose C libraries do not support "%lld" in printf formatstrings for printing long long integers.Patch follows.--- tar-1.12/src/create.c	Mon Dec 15 17:26:47 1997+++ tar-1.12/src/create.c	Mon Dec 15 17:50:48 1997@@ -1048,7 +1048,7 @@ 	}       if (save_typeflag == GNUTYPE_SPARSE) 	{-	  if (finish_sparse_file (f, &sizeleft, current_stat.st_size, p))+	  if (f < 0 || finish_sparse_file (f, &sizeleft, current_stat.st_size, p)) 	    goto padit; 	}       else--- tar-1.12/lib/Makefile.am	Wed Apr 16 16:30:04 1997+++ tar-1.12/lib/Makefile.am	Mon Nov 17 06:45:43 1997@@ -37,6 +37,9 @@ libtar_a_LIBADD = @ALLOCA@ @LIBOBJS@ libtar_a_DEPENDENCIES = $(libtar_a_LIBADD) +$(srcdir)/getdate.h:+	touch $@+ # Say $(srcdir), so GNU make does not report an ambiguity with the .y.c rule. $(srcdir)/getdate.c: getdate.y 	@echo Expect 13 shift/reduce conflicts...--- tar-1.12/src/arith.h	Wed Apr 16 18:02:57 1997+++ tar-1.12/src/arith.h	Mon Nov 17 05:47:33 1997@@ -37,10 +37,10 @@  #if BITS_PER_BYTE * SIZEOF_UNSIGNED_LONG >= BITS_PER_TARLONG # define SUPERDIGIT 0-# define TARLONG_FORMAT "%uld"+# define TARLONG_FORMAT "%lu" typedef unsigned long tarlong; #else-# if BITS_PER_BYTE * SIZEOF_LONG_LONG >= BITS_PER_TARLONG + 1+# if PRINTF_LONG_LONG_WORKS && BITS_PER_BYTE * SIZEOF_LONG_LONG >= BITS_PER_TARLONG + 1 #  define SUPERDIGIT 0 #  define TARLONG_FORMAT "%lld" typedef long long tarlong;@@ -48,12 +48,12 @@ #  if BITS_PER_BYTE * SIZEOF_UNSIGNED_LONG >= 64 #   define SUPERDIGIT 1000000000L #   define BITS_PER_SUPERDIGIT 29-#   define TARLONG_FORMAT "%09uld"+#   define TARLONG_FORMAT "%09lu" #  else #   if BITS_PER_BYTE * SIZEOF_UNSIGNED_LONG >= 32 #    define SUPERDIGIT 10000L #    define BITS_PER_SUPERDIGIT 14-#    define TARLONG_FORMAT "%04uld"+#    define TARLONG_FORMAT "%04lu" #   endif #  endif # endif--- tar-1.12/src/arith.c	Wed Apr 23 23:25:57 1997+++ tar-1.12/src/arith.c	Mon Nov 17 08:11:11 1997@@ -96,7 +96,7 @@ void add_to_tarlong_helper (unsigned long *accumulator, int value) {-  int counter;+  int counter, newvalue;    if (value < 0)     for (counter = 0; counter < LONGS_PER_TARLONG; counter++)@@ -106,8 +106,15 @@ 	    accumulator[counter] += value; 	    return; 	  }-	accumulator[counter] += value + SUPERDIGIT;-	value = -1;+	newvalue = - ((-value-1) / SUPERDIGIT) -1;+	value = - ((-value) % SUPERDIGIT);+	accumulator[counter] += SUPERDIGIT + value;+	if (accumulator[counter] >= SUPERDIGIT)+	  {+	    accumulator[counter] -= SUPERDIGIT;+	    ++newvalue;+	  }+	value = newvalue;       }   else     for (counter = 0; counter < LONGS_PER_TARLONG; counter++)@@ -117,8 +124,15 @@ 	    accumulator[counter] += value; 	    return; 	  }-	accumulator[counter] += value - SUPERDIGIT;-	value = 1;+	newvalue = value / SUPERDIGIT;+	value = value % SUPERDIGIT;+	accumulator[counter] += value;+	if (accumulator[counter] >= SUPERDIGIT)+	  {+	    accumulator[counter] -= SUPERDIGIT;+	    ++newvalue;+	  }+	value = newvalue;       }   FATAL_ERROR ((0, 0, _("Arithmetic overflow"))); }@@ -155,7 +169,7 @@   while (counter > 0 && accumulator[counter] == 0)     counter--; -  fprintf (file, "%uld", accumulator[counter]);+  fprintf (file, "%lu", accumulator[counter]);   while (counter > 0)     fprintf (file, TARLONG_FORMAT, accumulator[--counter]); }--- tar-1.12/configure.in	Fri Apr 25 17:02:46 1997+++ tar-1.12/configure.in	Mon Nov 17 06:17:49 1997@@ -26,6 +26,35 @@ AC_CHECK_SIZEOF(unsigned long, 4) AC_CHECK_SIZEOF(long long, 0) +# SunOS 4.1.3's printf treats %lld as %ld+AC_CACHE_CHECK([whether printf understands %lld],+	tar_cv_printf_long_long_works,+	AC_TRY_RUN([[+#include <stdio.h>+main() {+  long long foo = -1;+  char buf[1024];+  while(foo) {+    long long bar = 0;+    sprintf(buf, "%lld", foo);+    sscanf(buf, "%lld", &bar);+    if (foo != bar)+      return 1;+    foo <<= 1;+  }+  return 0;+}+	]], +	tar_cv_printf_long_long_works=yes,+	tar_cv_printf_long_long_works=no,+	if test x"$tar_cv_printf_long_long_works" = x; then+		tar_cv_printf_long_long_works=cross+	fi)+)+if test x"$tar_cv_printf_long_long_works" = x"yes"; then+	AC_DEFINE(PRINTF_LONG_LONG_WORKS)+fi+ AC_CHECK_HEADERS(fcntl.h limits.h linux/fd.h memory.h net/errno.h poll.h \ sgtty.h string.h stropts.h \ sys/buf.h sys/device.h sys/gentape.h sys/inet.h sys/io/trioctl.h sys/ioccom.h \--- tar-1.12/acconfig.h	Thu Apr 10 11:37:02 1997+++ tar-1.12/acconfig.h	Mon Nov 17 05:53:38 1997@@ -86,3 +86,6 @@  /* Define to 1 if GNU regex should be used instead of GNU rx.  */ #undef WITH_REGEX++/* Define to 1 if printf() supports "%lld" */+#undef PRINTF_LONG_LONG_WORKS--- tar-1.12/configure+++ tar-1.12/configure@@ -1,2 +1,4 @@ #! /bin/sh+echo You must run autoheader and autoconf after installing this patch+exit 1 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -