]> err.no Git - dpkg/commitdiff
lib/mlib.c: fix error reporting for reading data in do_fd_copy
authorWichert Akkerman <wakkerma@debian.org>
Thu, 23 Nov 2000 17:54:19 +0000 (17:54 +0000)
committerWichert Akkerman <wakkerma@debian.org>
Thu, 23 Nov 2000 17:54:19 +0000 (17:54 +0000)
optlib/Makefile.am: remove (can't believe this still existed!)
utils/Makefile.in: link md5sum with our own libintl if needed
archtable, scripts/dpkg-architecture.pl: add freebsd-i386
acconfig.h, configure.in, doc/Makefile.in: make building documentation and start-stop-daemon optional
main/help.c: only check for start-stop-daemon in checkpatch() if we build it

14 files changed:
ChangeLog
acconfig.h
archtable
configure.in
doc/Makefile.in
dpkg-deb/build.c
dpkg-deb/info.c
include/dpkg.h.in
lib/mlib.c
lib/showcright.c
main/help.c
optlib/Makefile.am [deleted file]
scripts/dpkg-architecture.pl
utils/Makefile.in

index f2d83fe4f0d1530ac76047a7f93eac55fd468bef..7d2ee259a253fc169ad3c4106c4b564f511ff38a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,21 @@
 Thu Nov 23 17:52:44 CET 2000 Wichert Akkerman <wakkerma@debian.org>
 
   * lib/fields.c, lib/dump.c: fix two memory leaks
+  * More Adam Heath patches:
+    + lib/mlib.c, include/dpkg.h.in: add new option for do_fd_copy to
+      specify buffersize
+    + dpkg-deb/build.c, lib/info.c, lib/showcright.c: update for new
+      do_fd_copy
+    + dpkg-deb/extract.c: use do_fd_copy to read data instead of reading
+      per character.
+  * lib/mlib.c: fix error reporting for reading data in do_fd_copy
+  * optlib/Makefile.am: remove (can't believe this still existed!)
+  * utils/Makefile.in: link md5sum with our own libintl if needed
+  * archtable, scripts/dpkg-architecture.pl: add freebsd-i386
+  * acconfig.h, configure.in, doc/Makefile.in: make building documentation
+    and start-stop-daemon optional
+  * main/help.c: only check for start-stop-daemon in checkpatch() if we
+    build it
 
 Thu Nov 23 15:48:53 CET 2000 Wichert Akkerman <wakkerma@debian.org>
 
index b3414010ec39152ab832a0624b101e9db711ba76..e5716f6f3fe34c7155e6320ec9d1d124003d40d9 100644 (file)
@@ -72,3 +72,5 @@
 /* Define the ptrdiff_t type if your system doesn't have it */
 #undef ptrdiff_t
 
+/* Define if start-stop-daemon is compiled */
+#undef USE_START_STOP_DAEMON
index 14d3be6864e42d6f06e489f49cc6106d1c200c02..bdd17de86b6a6e212525144ffaa3fb61acf6dd5c 100644 (file)
--- a/archtable
+++ b/archtable
@@ -38,3 +38,4 @@ shel-linux-gnu                sh              sh
 hppa-linux-gnu         hppa            hppa
 hppa1.1-linux-gnu      hppa            hppa
 hppa2.0-linux-gnu      hppa            hppa
+i386-freebsd           freebsd-i386    freebsd-i386
index ac81e5897858ac8e7ec46812c73280f9a01f16b7..3fdce460971cacf693c9b883e00020761b048b36 100644 (file)
@@ -16,6 +16,30 @@ AC_ARG_WITH(dselect,
  esac])
 AC_SUBST(DSELECTDIR)
 
+USE_START_STOP_DAEMON="true"
+AC_ARG_WITH(start-stop-daemon,
+[  --with-start-stop-daemon
+                          start and stop system daemons],
+[case "$withval" in
+  "false" | "no" )
+    USE_START_STOP_DAEMON=""
+    ;;
+ esac])
+AC_SUBST(USE_START_STOP_DAEMON)
+if test "$USE_START_STOP_DAEMON" != ""; then
+    AC_DEFINE(USE_START_STOP_DAEMON)
+fi
+
+USE_SGML_DOC="true"
+AC_ARG_WITH(sgml-doc,
+[  --with-sgml-doc         SGML documentation converted to HTML],
+[case "$withval" in
+  "false" | "no" )
+    USE_SGML_DOC=""
+    ;;
+ esac])
+AC_SUBST(USE_SGML_DOC)
+
 admindir="$libdir/db"
 AC_ARG_WITH(admindir,
 [  --with-admindir=DIR     store dpkg database in DIR [LIBDIR/db]],
index 01e1bb4e1cc3face7c65404c5a3996be521043cf..060e67136dbb03bb719281a78518e3130bcace47 100644 (file)
@@ -8,7 +8,11 @@ include ../Makefile.conf
 
 MAN5PAGES      = deb-control.5 deb-old.5 deb.5
 
+ifeq (@USE_SGML_DOC@, true)
 all: internals.html/index.html all-recursive
+else
+all: all-recursive
+endif
 
 clean: clean-recursive
        $(RM) $(srcdir)/manuals-version
@@ -33,11 +37,13 @@ install-doc: install-doc-recursive
                if test -f $$i ; then d= ; else d="$(srcdir)/" ; fi ; \
                $(INSTALL_DATA) $$d$$i $(DESTDIR)$(man5dir) ; \
        done
+ifeq (@USE_SGML_DOC@, true)
        $(mkinstalldirs) $(DESTDIR)$(docdir)/internals/
        set -e ; for i in internals.html/* ; do \
                bn=`basename $$i` ; \
                $(INSTALL_DATA) $$i $(DESTDIR)$(docdir)/internals/$$bn ; \
        done
+endif
        $(INSTALL_DATA) $(srcdir)/ChangeLog $(DESTDIR)$(docdir)/ChangeLog.manuals
        set -e ; for i in ChangeLog THANKS TODO ; do \
                $(INSTALL_DATA) $(top_srcdir)/$$i $(DESTDIR)$(docdir) ; \
index 60398f290005f21413bd8a40b3ede37eec17137d..6e4add377a4c4d73d34e57a792375a5d63b754ab 100644 (file)
@@ -364,7 +364,7 @@ void do_build(const char *const *argv) {
   }                
                 
   if (lseek(gzfd,0,SEEK_SET)) ohshite(_("failed to rewind tmpfile (control)"));
-  do_fd_copy(gzfd, fileno(ar), _("control"));
+  do_fd_copy(gzfd, fileno(ar), -1, _("control"));
 
   /* Control is done, now we need to archive the data. Start by creating
    * a new temporary file. Immediately unlink the temporary file so others
@@ -422,7 +422,7 @@ void do_build(const char *const *argv) {
     combuf = strdup("-9c");
     if(compression != NULL) {
       if(*compression == '0') {
-       do_fd_copy(0, 1, _("no compression copy loop"));
+       do_fd_copy(0, 1, -1, _("no compression copy loop"));
        exit(0);
       }
       combuf[1] = *compression;
@@ -456,11 +456,7 @@ void do_build(const char *const *argv) {
       werr(debar);
 
     if (lseek(gzfd,0,SEEK_SET)) ohshite(_("failed to rewind tmpfile (data)"));
-    if (!(c3= m_fork())) {
-      m_dup2(gzfd,0); m_dup2(fileno(ar),1);
-      execlp(CAT,"cat",(char*)0); ohshite(_("failed to exec cat (data)"));
-    }
-    waitsubproc(c3,"cat (data)",0);
+    do_fd_copy(gzfd, fileno(ar), -1, _("cat (data)"));
 
     if (datastab.st_size & 1)
       if (putc('\n',ar) == EOF)
index d9253558c49b041ab07a205b9451dab22572d4d9..324009f6a59723dd85739d61f3771ba8bf4e19f5 100644 (file)
@@ -90,7 +90,7 @@ static void info_spew(const char *debar, const char *directory,
   while ((component= *argv++) != 0) {
     co= fopen(component,"r");
     if (co) {
-      do_fd_copy(fileno(co), 1, _("info_spew"));
+      do_fd_copy(fileno(co), 1, -1, _("info_spew"));
     } else if (errno == ENOENT) {
       if (fprintf(stderr, _("dpkg-deb: `%.255s' contains no control component `%.255s'\n"),
                   debar, component) == EOF) werr("stderr");
index 8bbc5ca88da76fe2de3f966d4bb4c96f56d35ddc..eca92c1d604df3c077c164032564f485bccc7179 100644 (file)
@@ -199,7 +199,7 @@ void m_pipe(int fds[2]);
 void checksubprocerr(int status, const char *description, int sigpipeok);
 void waitsubproc(pid_t pid, const char *description, int sigpipeok);
 
-int do_fd_copy(int fd1, int fd2, char *desc);
+int do_fd_copy(int fd1, int fd2, int limit, char *desc);
 
 extern volatile int onerr_abort;
 
index a700db02a8f904a83c6995a9b1e456d24deec9da..33f8957bf384e2f187fffb7eec284d0c0cf05236 100644 (file)
@@ -123,9 +123,9 @@ void waitsubproc(pid_t pid, const char *description, int sigpipeok) {
   checksubprocerr(status,description,sigpipeok);
 }
 
-int do_fd_copy(int fd1, int fd2, char *desc) {
+int do_fd_copy(int fd1, int fd2, int limit, char *desc) {
     char *buf, *sbuf;
-    int count;
+    int count, bufsize = 32768;
     char *er_msg_1 = _("failed to allocate buffer for copy (%s)");
     char *er_msg_2 = _("failed in copy on write (%s)");
     char *er_msg_3 = _("failed in copy on read (%s)");
@@ -137,32 +137,40 @@ int do_fd_copy(int fd1, int fd2, char *desc) {
     snprintf(sbuf, count, er_msg_1, desc);
     sbuf[count-1] = 0;
 
-    buf = malloc(32768);
+    if((limit != -1) && (limit < bufsize))
+       bufsize = limit;
+    buf = malloc(bufsize);
     if(buf == NULL)
        ohshite(sbuf);
     free(sbuf);
 
-    count = strlen(er_msg_2) + strlen(desc) + 1;
-    sbuf = malloc(count);
-    if(sbuf == NULL)
-       ohshite(_("failed to allocate buffer for snprintf 2"));
-    snprintf(sbuf, count, er_msg_2, desc);
-    sbuf[count-1] = 0;
-
-    while((count = read(fd1, buf, 32768)) > 0)
-       if(write(fd2, buf, count) < count)
-               ohshite(sbuf);
-
+    while((count = read(fd1, buf, bufsize)) > 0) {
+       if(write(fd2, buf, count) < count) {
+         count = strlen(er_msg_2) + strlen(desc) + 1;
+         sbuf = malloc(count);
+         if(sbuf == NULL)
+           ohshite(_("failed in copy on write"));
+         snprintf(sbuf, count, er_msg_2, desc);
+         sbuf[count-1] = 0;
+         ohshite(sbuf);
+       }
+       if(limit != -1) {
+           limit -= count;
+           if(limit < bufsize)
+               bufsize = limit;
+       }
+    }
     free(sbuf);
-    count = strlen(er_msg_3) + strlen(desc) + 1;
-    sbuf = malloc(count);
-    if(sbuf == NULL)
-       ohshite(_("failed to allocate buffer for snprintf 2"));
-    snprintf(sbuf, count, er_msg_3, desc);
-    sbuf[count-1] = 0;
+    if (count<0) {
+      count = strlen(er_msg_3) + strlen(desc) + 1;
+      sbuf = malloc(count);
+      if(sbuf == NULL)
+       ohshite(_("failed in copy on read"));
+      snprintf(sbuf, count, er_msg_3, desc);
+      sbuf[count-1] = 0;
+      ohsite(sbuf);
+    }
 
-    if(count < 0)
-       ohshite(_("failed in copy on read (control)"));
     free(sbuf);
     free(buf);
 }
index acd3fe1e4c653d3f41f9407b634a28e2bf1bda73..ab4f6c1173c7b958ccbe7e079f5bb4e18e465e2c 100644 (file)
@@ -29,6 +29,6 @@ void showcopyright(const struct cmdinfo *c, const char *v) {
   int fd;
   fd= open(COPYINGFILE,O_RDONLY);
   if (fd < 0) ohshite(_("cannot open GPL file "));
-  do_fd_copy(fd, 1, "showcopyright");
+  do_fd_copy(fd, 1, -1, "showcopyright");
   exit(0);
 }
index b798226e9b6bb1f270a198972b8a70da62870a10..9653ea9403c50f2dc60c2c07e9a07b822f22c60f 100644 (file)
@@ -69,8 +69,11 @@ struct filenamenode *namenodetouse(struct filenamenode *namenode, struct pkginfo
 
 void checkpath(void) {
 /* Verify that some programs can be found in the PATH. */
-  static const char *const checklist[]= {
-    "ldconfig", "start-stop-daemon", "install-info", "update-rc.d", 0
+  static const char *const checklist[]= { "ldconfig", 
+#ifdef USE_START_STOP_DAEMON
+    "start-stop-daemon",
+#endif    
+    "install-info", "update-rc.d", 0
   };
 
   struct stat stab;
diff --git a/optlib/Makefile.am b/optlib/Makefile.am
deleted file mode 100644 (file)
index 361656c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-## Process this file with automake to produce Makefile.in
-noinst_LIBRARIES = liboptlib.a
-
-EXTRA_DIST = getdate.c
-
-INCLUDES = -I.. -I$(srcdir) 
-
-liboptlib_a_SOURCES = getopt.c getopt1.c long-options.c closeout.c
-
-#liboptlib_a_LIBADD = @LIBOBJS@ @ALLOCA@
-liboptlib_a_DEPENDENCIES = $(liboptlib_a_LIBADD)
-
-noinst_HEADERS = getopt.h long-options.h closeout.h error.h
-
-BUILT_SOURCES = 
-
-# Remove these files here... they are created locally
-DISTCLEANFILES = $(BUILT_SOURCES) .deps/* *~
-
index 987cb70f47bfef9c6a5e84d3085b57b347f6dd55..06e4b30d8737cf487a547069cbc0b709a7ca6c0c 100755 (executable)
@@ -59,7 +59,8 @@ require 'controllib.pl';
            'sh',        'sh-linux',
            'shed',      'shed-linux',
            'hppa',      'hppa-linux',
-           'hurd-i386', 'i386-gnu');
+           'hurd-i386', 'i386-gnu',
+           'freebsd-i386', 'i386-freebsd');
 
 sub usageversion {
     print STDERR
index bb73b7cfc88e43e0b1780f0ad5b94fcc6fc33507..c95ded66eb638e95b1d26f819e96811f8ecf0aec 100644 (file)
@@ -15,11 +15,17 @@ MD5_SOURCES         = md5sum.c md5.c
 MD5_OBJECTS            = $(patsubst %.c, %.o, $(MD5_SOURCES))
 MD5_MANPAGES           = md5sum.1
 
-GENFILES               = $(SSD_OBJECTS) start-stop-daemon \
-                         $(MD5_OBJECTS) md5sum
+GENFILES               = $(MD5_OBJECTS) md5sum
+ifeq (@USE_START_STOP_DAEMON@, true)
+GENFILES               += $(SSD_OBJECTS) start-stop-daemon
+endif
 
 .PHONY: all
+ifeq (@USE_START_STOP_DAEMON@, true)
 all:: start-stop-daemon md5sum
+else
+all:: md5sum
+endif
 
 .PHONY: install
 install:: all
@@ -37,15 +43,19 @@ install:: install-program install-doc
 
 .PHONY: install-program
 install-program:
+ifeq (@USE_START_STOP_DAEMON@, true)
        $(mkinstalldirs) $(DESTDIR)/$(sbindir)
        $(INSTALL) start-stop-daemon $(DESTDIR)/$(sbindir)
+endif
        $(mkinstalldirs) $(DESTDIR)/$(bindir)
        $(INSTALL) md5sum $(DESTDIR)/$(bindir)
 
 .PHONY: install-doc
 install-doc:
+ifeq (@USE_START_STOP_DAEMON@, true)
        $(mkinstalldirs) $(DESTDIR)/$(man8dir)
        $(INSTALL_DATA) $(srcdir)/$(SSD_MANPAGES) $(DESTDIR)/$(man8dir)
+endif
        $(mkinstalldirs) $(DESTDIR)/$(man1dir)
        $(INSTALL_DATA) $(srcdir)/$(MD5_MANPAGES) $(DESTDIR)/$(man1dir)
 
@@ -53,4 +63,5 @@ start-stop-daemon: $(SSD_OBJECTS) ../optlib/libopt.a
        $(CC) $(LDFLAGS) -o $@ $^ $(SSD_LIBS)
 
 md5sum: $(MD5_OBJECTS) ../optlib/libopt.a
+       $(CC) $(LDFLAGS) -o $@ $^ $(NLS_LIBS)