pkgsrc-wip/c-news/patches/patch-ac
2003-09-30 15:39:59 +00:00

70 lines
1.7 KiB
Text

$NetBSD: patch-ac,v 1.1 2003/09/30 15:39:59 hfath Exp $
--- input/newsspool.c.orig Fri Apr 28 02:50:59 1995
+++ input/newsspool.c
@@ -156,7 +156,7 @@
register char *p;
p = strsave(fullartfile("in.coming/nspool.XXXXXX"));
- mktemp(p);
+ mkstemp(p);
return(p);
}
@@ -215,12 +215,16 @@
char *bufp;
int count;
{
- static char goop[] = "cunbatch";
-# define GOOPLEN (sizeof(goop)-1) /* strlen(goop) */
- static char suf[] = ".Z";
+ static char c_goop[] = "cunbatch";
+# define C_GOOPLEN (sizeof(c_goop)-1) /* strlen(c_goop) */
+ static char g_goop[] = "gunbatch";
+# define G_GOOPLEN (sizeof(g_goop)-1) /* strlen(g_goop) */
+ static char csuf[] = ".Z";
+ static char gsuf[] = ".gz";
static char comp[] = "\037\235"; /* compress's magic no. */
- register char *p;
- register int nleft;
+ static char gzip[] = "\037\213"; /* gzip's magic no. */
+ char *p;
+ int nleft;
# define MINCBATCH 5 /* one character, compressed */
nleft = count;
@@ -232,7 +236,14 @@
if (p[0] == comp[0] && p[1] == comp[1]) { /* compressed */
if (nleft < MINCBATCH)
return(count);
- suffix = suf;
+ suffix = csuf;
+ return(0);
+ }
+
+ if (p[0] == gzip[0] && p[1] == gzip[1]) { /* gzipped */
+ if (nleft < MINCBATCH)
+ return(count);
+ suffix = gsuf;
return(0);
}
@@ -247,10 +258,14 @@
}
/* recognize headers (the +1s ensure room for the newline) */
- if (nleft >= GOOPLEN+1 && STREQN(p, goop, GOOPLEN)) {
- p += GOOPLEN;
- nleft -= GOOPLEN;
- suffix = suf;
+ if (nleft >= C_GOOPLEN+1 && STREQN(p, c_goop, C_GOOPLEN)) {
+ p += C_GOOPLEN;
+ nleft -= C_GOOPLEN;
+ suffix = csuf;
+ } else if (nleft >= G_GOOPLEN+1 && STREQN(p, g_goop, G_GOOPLEN)) {
+ p += G_GOOPLEN;
+ nleft -= G_GOOPLEN;
+ suffix = gsuf;
} else /* no header */
return(0);