From 59e75644e4909f2dc0bde35695edd1178716356f Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Sun, 22 Nov 1998 09:30:25 +0000 Subject: [PATCH] (retrying): support on-the-fly decompression git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@5221 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/ftp/ftpd/ftpd.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/appl/ftp/ftpd/ftpd.c b/appl/ftp/ftpd/ftpd.c index 5caea8b17..1cd14e7c2 100644 --- a/appl/ftp/ftpd/ftpd.c +++ b/appl/ftp/ftpd/ftpd.c @@ -854,14 +854,15 @@ retrieve(char *cmd, char *name) st.st_size = 0; if(fin == NULL){ struct cmds { - char *ext; - char *cmd; + const char *ext; + const char *cmd; + const char *rev_cmd; } cmds[] = { - {".tar", "/bin/gtar cPf - %s"}, - {".tar.gz", "/bin/gtar zcPf - %s"}, - {".tar.Z", "/bin/gtar ZcPf - %s"}, - {".gz", "/bin/gzip -c %s"}, - {".Z", "/bin/compress -c %s"}, + {".tar", "/bin/gtar cPf - %s", NULL}, + {".tar.gz", "/bin/gtar zcPf - %s", NULL}, + {".tar.Z", "/bin/gtar ZcPf - %s", NULL}, + {".gz", "/bin/gzip -c %s", "/bin/gzip -c -d %s"}, + {".Z", "/bin/compress -c %s", "/bin/uncompress -c -d %s"}, {NULL, NULL} }; struct cmds *p; @@ -877,6 +878,21 @@ retrieve(char *cmd, char *name) break; } *tail = c; + if (p->rev_cmd != NULL) { + char *ext; + + asprintf(&ext, "%s%s", name, p->ext); + if (ext != NULL) { + if (access(ext, R_OK) == 0) { + snprintf (line, sizeof(line), + p->rev_cmd, ext); + free(ext); + break; + } + free(ext); + } + } + } if(p->ext){ fin = ftpd_popen(line, "r", 0, 0);