make uudecode be able to decode more than one file
This commit is contained in:
parent
12fbaf7c9c
commit
cde4c19716
@ -11,6 +11,7 @@ int main(int argc,char* argv[]) {
|
||||
buffer fileout;
|
||||
int fd=0;
|
||||
int ofd=-1;
|
||||
int found=0;
|
||||
unsigned long mode=0,lineno=0;
|
||||
if (argc>1) {
|
||||
fd=open_read(argv[1]);
|
||||
@ -22,12 +23,14 @@ int main(int argc,char* argv[]) {
|
||||
}
|
||||
}
|
||||
buffer_init(&filein,read,fd,buf,sizeof buf);
|
||||
again:
|
||||
/* skip to "^begin " */
|
||||
for (;;) {
|
||||
char line[1000]; /* uuencoded lines can never be longer than 64 characters */
|
||||
int l;
|
||||
if ((l=buffer_getline(&filein,line,(sizeof line)-1))==0) {
|
||||
buffer_putsflush(buffer_2,"warning: hit end of file without finding any uuencoded data!\n");
|
||||
if ((l=buffer_getline(&filein,line,(sizeof line)-1))==0 && line[l]!='\n') {
|
||||
if (!found)
|
||||
buffer_putsflush(buffer_2,"warning: hit end of file without finding any uuencoded data!\n");
|
||||
return 0;
|
||||
}
|
||||
++lineno;
|
||||
@ -37,6 +40,11 @@ int main(int argc,char* argv[]) {
|
||||
if (line[l=6+scan_8long(line+6,&mode)]==' ' && mode) {
|
||||
int i;
|
||||
++l;
|
||||
if (line[l]=='"') {
|
||||
int m;
|
||||
++l;
|
||||
line[str_chr(line+l,'"')]=0;
|
||||
}
|
||||
if (line[l+(i=str_rchr(line+l,'/'))]) l+=i+1;
|
||||
while (line[l]=='.') ++l;
|
||||
if (line[l]) {
|
||||
@ -45,7 +53,12 @@ int main(int argc,char* argv[]) {
|
||||
buffer_puts(buffer_2,"error: could not create file \"");
|
||||
buffer_puts(buffer_2,line+l);
|
||||
buffer_putsflush(buffer_2,"\" (must not exist yet)\n");
|
||||
} else break;
|
||||
} else {
|
||||
buffer_puts(buffer_2,"decoding file \"");
|
||||
buffer_puts(buffer_2,line+l);
|
||||
buffer_putsflush(buffer_2,"\"\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -70,7 +83,8 @@ int main(int argc,char* argv[]) {
|
||||
buffer_flush(&fileout);
|
||||
fchmod(ofd,mode);
|
||||
close(ofd);
|
||||
return 0;
|
||||
++found;
|
||||
goto again;
|
||||
} else {
|
||||
parseerror:
|
||||
buffer_puts(buffer_1,"parse error in line ");
|
||||
|
Loading…
x
Reference in New Issue
Block a user