Your message dated Sun, 17 Apr 2011 14:01:23 -0400
with message-id <20110417140120.0291613729.qww314159@soup>
and subject line build failure due to off_t fixed in 1.17-29
has caused the Debian Bug report #617872,
regarding psutils: Build failure due to off_t changes
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
617872: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=617872
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: psutils
Source-Version: 1.17-28
Severity: important
Tags: patch

Hi!

The patch in #595239 seems to have introduced a regression, only
for kfreebsd-i386, although this might imply not completely LFS safe
operation on the rest of the 32-bit architectures. Attached is an
updated patch which should fix it, the relevant changes are the
switch of types for sizeheaders.

The failed build log:

  
<https://buildd.debian.org/fetch.cgi?pkg=psutils&arch=kfreebsd-i386&ver=1.17-28&stamp=1289868758&file=log&as=raw>


I'd also ask you to consider removing the -Werror flag, as it can
trigger build failure on toolchain updates for example. While it's
always good to build stuff with -Werror during development, it's not
so much for releases and such. And although in this case it revealed
a true problem, that might not be usually the case.

thanks,
guillem
---
 psnup.c    |    2 -
 psresize.c |    2 -
 psspec.c   |    2 -
 psspec.h   |    2 -
 psutil.c   |   69 +++++++++++++++++++++++++++++++++----------------------------
 psutil.h   |    6 ++---
 6 files changed, 45 insertions(+), 38 deletions(-)

--- a/psutil.c
+++ b/psutil.c
@@ -5,7 +5,10 @@
  * utilities for PS programs
  */
 
+
 /*
+ *  Daniele Giacomini [email protected] 2010-09-02
+ *    Changed to using ftello() and fseeko()
  *  AJCD 6/4/93
  *    Changed to using ftell() and fseek() only (no length calculations)
  *  Hunter Goatley    31-MAY-1993 23:33
@@ -13,6 +16,9 @@
  *  Hunter Goatley     2-MAR-1993 14:41
  *    Added VMS support.
  */
+
+#define _FILE_OFFSET_BITS 64
+
 #include "psutil.h"
 #include "pserror.h"
 #include "patchlev.h"
@@ -20,6 +26,7 @@
 #include <string.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <stdio.h>
 
 #define iscomment(x,y) (strncmp(x,y,strlen(y)) == 0)
 
@@ -33,14 +40,14 @@ extern int pageno;
 
 static char buffer[BUFSIZ];
 static long bytes = 0;
-static long pagescmt = 0;
-static long headerpos = 0;
-static long endsetup = 0;
-static long beginprocset = 0;		/* start of pstops procset */
-static long endprocset = 0;
+static off_t pagescmt = 0;
+static off_t headerpos = 0;
+static off_t endsetup = 0;
+static off_t beginprocset = 0;		/* start of pstops procset */
+static off_t endprocset = 0;
 static int outputpage = 0;
 static int maxpages = 100;
-static long *pageptr;
+static off_t *pageptr;
 
 /* list of paper sizes supported */
 static Paper papersizes[] = {
@@ -94,15 +101,15 @@ FILE *seekable(FILE *fp)
 #if defined(WINNT)
   struct _stat fs ;
 #else
-  long fpos;
+  off_t fpos;
 #endif
 
 #if defined(WINNT)
   if (_fstat(fileno(fp), &fs) == 0 && (fs.st_mode&_S_IFREG) != 0)
     return (fp);
 #else
-  if ((fpos = ftell(fp)) >= 0)
-    if (!fseek(fp, 0L, SEEK_END) && !fseek(fp, fpos, SEEK_SET))
+  if ((fpos = ftello(fp)) >= 0)
+    if (!fseeko(fp, (off_t) 0, SEEK_END) && !fseeko(fp, fpos, SEEK_SET))
       return (fp);
 #endif
 
@@ -127,7 +134,7 @@ FILE *seekable(FILE *fp)
 
   /* discard the input file, and rewind the temporary */
   (void) fclose(fp);
-  if (fseek(ft, 0L, SEEK_SET) != 0)
+  if (fseeko(ft, (off_t) 0, SEEK_SET) != 0)
     return (NULL) ;
 
   return (ft);
@@ -137,10 +144,10 @@ FILE *seekable(FILE *fp)
 
 /* copy input file from current position upto new position to output file,
  * ignoring the lines starting at something ignorelist points to */
-static int fcopy(long upto, long *ignorelist)
+static int fcopy(off_t upto, off_t *ignorelist)
 {
-  long here = ftell(infile);
-  long bytes_left;
+  off_t here = ftello(infile);
+  off_t bytes_left;
 
   if (ignorelist != NULL) {
     while (*ignorelist > 0 && *ignorelist < here)
@@ -151,7 +158,7 @@ static int fcopy(long upto, long *ignore
       if (!r || fgets(buffer, BUFSIZ, infile) == NULL)
 	return 0;
       ignorelist++;
-      here = ftell(infile);
+      here = ftello(infile);
       while (*ignorelist > 0 && *ignorelist < here)
 	ignorelist++;
     }
@@ -172,27 +179,27 @@ static int fcopy(long upto, long *ignore
 }
 
 /* build array of pointers to start/end of pages */
-void scanpages(long *sizeheaders)
+void scanpages(off_t *sizeheaders)
 {
    register char *comment = buffer+2;
    register int nesting = 0;
-   register long int record;
+   register off_t record;
 
    if (sizeheaders)
      *sizeheaders = 0;
 
-   if ((pageptr = (long *)malloc(sizeof(long)*maxpages)) == NULL)
+   if ((pageptr = (off_t *)malloc(sizeof(off_t)*maxpages)) == NULL)
       message(FATAL, "out of memory\n");
    pages = 0;
-   fseek(infile, 0L, SEEK_SET);
-   while (record = ftell(infile), fgets(buffer, BUFSIZ, infile) != NULL)
+   fseeko(infile, (off_t) 0, SEEK_SET);
+   while (record = ftello(infile), fgets(buffer, BUFSIZ, infile) != NULL)
       if (*buffer == '%') {
 	 if (buffer[1] == '%') {
 	    if (nesting == 0 && iscomment(comment, "Page:")) {
 	       if (pages >= maxpages-1) {
 		  maxpages *= 2;
-		  if ((pageptr = (long *)realloc((char *)pageptr,
-					     sizeof(long)*maxpages)) == NULL)
+		  if ((pageptr = (off_t *)realloc((char *)pageptr,
+					     sizeof(off_t)*maxpages)) == NULL)
 		     message(FATAL, "out of memory\n");
 	       }
 	       pageptr[pages++] = record;
@@ -219,7 +226,7 @@ void scanpages(long *sizeheaders)
 	    } else if (headerpos == 0 && iscomment(comment, "Pages:"))
 	       pagescmt = record;
 	    else if (headerpos == 0 && iscomment(comment, "EndComments"))
-	       headerpos = ftell(infile);
+	       headerpos = ftello(infile);
 	    else if (iscomment(comment, "BeginDocument") ||
 		     iscomment(comment, "BeginBinary") ||
 		     iscomment(comment, "BeginFile"))
@@ -231,23 +238,23 @@ void scanpages(long *sizeheaders)
 	    else if (nesting == 0 && iscomment(comment, "EndSetup"))
 	       endsetup = record;
 	    else if (nesting == 0 && iscomment(comment, "BeginProlog"))
-	       headerpos = ftell(infile);
+	       headerpos = ftello(infile);
 	    else if (nesting == 0 &&
 		       iscomment(comment, "BeginProcSet: PStoPS"))
 	       beginprocset = record;
 	    else if (beginprocset && !endprocset &&
 		     iscomment(comment, "EndProcSet"))
-	       endprocset = ftell(infile);
+	       endprocset = ftello(infile);
 	    else if (nesting == 0 && (iscomment(comment, "Trailer") ||
 				      iscomment(comment, "EOF"))) {
-	       fseek(infile, record, SEEK_SET);
+	       fseeko(infile, record, SEEK_SET);
 	       break;
 	    }
 	 } else if (headerpos == 0 && buffer[1] != '!')
 	    headerpos = record;
       } else if (headerpos == 0)
 	 headerpos = record;
-   pageptr[pages] = ftell(infile);
+   pageptr[pages] = ftello(infile);
    if (endsetup == 0 || endsetup > pageptr[0])
       endsetup = pageptr[0];
 }
@@ -255,7 +262,7 @@ void scanpages(long *sizeheaders)
 /* seek a particular page */
 void seekpage(int p)
 {
-   fseek(infile, pageptr[p], SEEK_SET);
+   fseeko(infile, pageptr[p], SEEK_SET);
    if (fgets(buffer, BUFSIZ, infile) != NULL &&
        iscomment(buffer, "%%Page:")) {
       char *start, *end;
@@ -332,9 +339,9 @@ void writepage(int p)
 }
 
 /* write from start of file to end of header comments */
-void writeheader(int p, long *ignore)
+void writeheader(int p, off_t *ignore)
 {
-   fseek(infile, 0L, SEEK_SET);
+   fseeko(infile, (off_t) 0, SEEK_SET);
    if (pagescmt) {
       if (!fcopy(pagescmt, ignore) || fgets(buffer, BUFSIZ, infile) == NULL)
 	 message(FATAL, "I/O error in header\n");
@@ -351,7 +358,7 @@ int writepartprolog(void)
    if (beginprocset && !fcopy(beginprocset, NULL))
       message(FATAL, "I/O error in prologue\n");
    if (endprocset)
-      fseek(infile, endprocset, SEEK_SET);
+      fseeko(infile, endprocset, SEEK_SET);
    writeprolog();
    return !beginprocset;
 }
@@ -373,7 +380,7 @@ void writesetup(void)
 /* write trailer */
 void writetrailer(void)
 {
-   fseek(infile, pageptr[pages], SEEK_SET);
+   fseeko(infile, pageptr[pages], SEEK_SET);
    while (fgets(buffer, BUFSIZ, infile) != NULL) {
       writestring(buffer);
    }
--- a/psutil.h
+++ b/psutil.h
@@ -4,7 +4,7 @@
  *
  * utilities for PS programs
  */
-
+#define _FILE_OFFSET_BITS 64
 #include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
@@ -32,13 +32,13 @@ extern void seekpage(int p);
 extern void writepageheader(char *label, int p);
 extern void writepagesetup(void);
 extern void writepagebody(int p);
-extern void writeheader(int p, long *ignorelist);
+extern void writeheader(int p, off_t *ignorelist);
 extern int writepartprolog(void);
 extern void writeprolog(void);
 extern void writesetup(void);
 extern void writetrailer(void);
 extern void writeemptypage(void);
-extern void scanpages(long *sizeheaders);
+extern void scanpages(off_t *sizeheaders);
 extern void writestring(char *s);
 
 /* These variables are imported from the client program (e.g. psbook, psnup,
--- a/psspec.c
+++ b/psspec.c
@@ -143,7 +143,7 @@ void pstops(int modulo, int pps, int nob
   pstops_write(modulo, pps, nobind, specs, draw, NULL);
 }
 
-void pstops_write(int modulo, int pps, int nobind, PageSpec *specs, double draw, long *ignorelist)
+void pstops_write(int modulo, int pps, int nobind, PageSpec *specs, double draw, off_t *ignorelist)
 {
    int thispg, maxpage;
    int pageindex = 0;
--- a/psspec.h
+++ b/psspec.h
@@ -29,4 +29,4 @@ extern double singledimen(char *str, voi
 extern void pstops(int modulo, int pps, int nobind, PageSpec *specs,
 		   double draw);
 extern void pstops_write(int modulo, int pps, int nobind, PageSpec *specs,
-                         double draw, long *ignorelist);
+                         double draw, off_t *ignorelist);
--- a/psnup.c
+++ b/psnup.c
@@ -88,7 +88,7 @@ main(int argc, char *argv[])
    double iwidth, iheight ;			/* input paper size */
    double tolerance = 100000;			/* layout tolerance */
    Paper *paper = NULL;
-   long sizeheaders[20];			/* headers to remove */
+   off_t sizeheaders[20];			/* headers to remove */
    int opt;
 
 #ifdef DEBIAN
--- a/psresize.c
+++ b/psresize.c
@@ -61,7 +61,7 @@ main(int argc, char *argv[])
    int rotate;
    double inwidth = -1;
    double inheight = -1;
-   long sizeheaders[20];			/* headers to remove */
+   off_t sizeheaders[20];			/* headers to remove */
    Paper *paper = NULL;
    PageSpec *specs;
    int opt;

--- End Message ---
--- Begin Message ---
Version: 1.17-29

This bug was closed by 1.17-29, but a typo in the bug number in the
ChangeLog file prevented the bug from being properly closed.

-- 
Jay Berkenbilt <[email protected]>


--- End Message ---

Reply via email to