File opie-2.4-bison.patch of Package opie
--- ftpcmd.y
+++ ftpcmd.y
@@ -183,7 +183,7 @@
cmd_list: /* empty */
| cmd_list cmd
- = {
+ {
fromname = (char *) 0;
restart_point = (off_t) 0;
}
@@ -191,17 +191,17 @@
;
cmd: USER SP username CRLF
- = {
+ {
user((char *) $3);
free((char *) $3);
}
| PASS SP password CRLF
- = {
+ {
pass((char *) $3);
free((char *) $3);
}
| PORT check_login SP host_port CRLF
- = {
+ {
usedefault = 0;
if (pdata >= 0) {
(void) close(pdata);
@@ -220,11 +220,11 @@
}
}
/* | PASV CRLF
- = {
+ {
passive();
} */
| PASV check_login CRLF
- = {
+ {
/* Require login for PASV, too. This actually fixes a bug -- telnet to an
unfixed wu-ftpd and type PASV first off, and it crashes! */
if ($2) {
@@ -232,7 +232,7 @@
}
}
| TYPE SP type_code CRLF
- = {
+ {
switch (cmd_type) {
case TYPE_A:
@@ -267,7 +267,7 @@
}
}
| STRU SP struct_code CRLF
- = {
+ {
switch ($3) {
case STRU_F:
@@ -279,7 +279,7 @@
}
}
| MODE SP mode_code CRLF
- = {
+ {
switch ($3) {
case MODE_S:
@@ -291,53 +291,53 @@
}
}
| ALLO SP NUMBER CRLF
- = {
+ {
reply(202, "ALLO command ignored.");
}
| ALLO SP NUMBER SP R SP NUMBER CRLF
- = {
+ {
reply(202, "ALLO command ignored.");
}
| RETR check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
retrieve((char *) 0, (char *) $4);
if ($4)
free((char *) $4);
}
| STOR check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
store((char *) $4, "w", 0);
if ($4)
free((char *) $4);
}
| APPE check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
store((char *) $4, "a", 0);
if ($4)
free((char *) $4);
}
| NLST check_login CRLF
- = {
+ {
if ($2)
send_file_list(".");
}
| NLST check_login SP STRING CRLF
- = {
+ {
if ($2 && $4)
send_file_list((char *) $4);
if ($4)
free((char *) $4);
}
| LIST check_login CRLF
- = {
+ {
if ($2)
retrieve(LS_COMMAND, "");
}
| LIST check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
{
char buffer[sizeof(LS_COMMAND)+3];
@@ -349,25 +349,25 @@
free((char *) $4);
}
| STAT check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
statfilecmd((char *) $4);
if ($4)
free((char *) $4);
}
| STAT CRLF
- = {
+ {
statcmd();
}
| DELE check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
delete((char *) $4);
if ($4)
free((char *) $4);
}
| RNTO SP pathname CRLF
- = {
+ {
if (fromname) {
renamecmd(fromname, (char *) $3);
free(fromname);
@@ -378,27 +378,27 @@
free((char *) $3);
}
| ABOR CRLF
- = {
+ {
reply(225, "ABOR command successful.");
}
| CWD check_login CRLF
- = {
+ {
if ($2)
cwd(pw->pw_dir);
}
| CWD check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
cwd((char *) $4);
if ($4)
free((char *) $4);
}
| HELP CRLF
- = {
+ {
help(cmdtab, (char *) 0);
}
| HELP SP STRING CRLF
- = {
+ {
register char *cp = (char *)$3;
if (strncasecmp(cp, "SITE", 4) == 0) {
@@ -413,43 +413,43 @@
help(cmdtab, (char *) $3);
}
| NOOP CRLF
- = {
+ {
reply(200, "NOOP command successful.");
}
| MKD check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
makedir((char *) $4);
if ($4)
free((char *) $4);
}
| RMD check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
removedir((char *) $4);
if ($4)
free((char *) $4);
}
| PWD check_login CRLF
- = {
+ {
if ($2)
pwd();
}
| CDUP check_login CRLF
- = {
+ {
if ($2)
cwd("..");
}
| SITE SP HELP CRLF
- = {
+ {
help(sitetab, (char *) 0);
}
| SITE SP HELP SP STRING CRLF
- = {
+ {
help(sitetab, (char *) $5);
}
| SITE SP UMASK check_login CRLF
- = {
+ {
int oldmask;
if ($4) {
@@ -459,7 +459,7 @@
}
}
| SITE SP UMASK check_login SP octal_number CRLF
- = {
+ {
int oldmask;
if ($4) {
@@ -474,7 +474,7 @@
}
}
| SITE SP CHMOD check_login SP octal_number SP pathname CRLF
- = {
+ {
if ($4 && $8) {
if ($6 > 0777)
reply(501,
@@ -488,13 +488,13 @@
free((char *) $8);
}
| SITE SP IDLE CRLF
- = {
+ {
reply(200,
"Current IDLE time limit is %d seconds; max %d",
timeout, maxtimeout);
}
| SITE SP IDLE SP NUMBER CRLF
- = {
+ {
if ($5 < 30 || $5 > maxtimeout) {
reply(501,
"Maximum IDLE time must be between 30 and %d seconds",
@@ -508,14 +508,14 @@
}
}
| STOU check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
store((char *) $4, "w", 1);
if ($4)
free((char *) $4);
}
| SYST CRLF
- = {
+ {
#ifdef unix
#ifdef BSD
reply(215, "UNIX Type: L%d Version: BSD-%d",
@@ -536,7 +536,7 @@
* using with RESTART (we just count bytes).
*/
| SIZE check_login SP pathname CRLF
- = {
+ {
if ($2 && $4)
sizecmd((char *) $4);
if ($4)
@@ -553,7 +553,7 @@
* not necessarily 3 digits)
*/
| MDTM check_login SP pathname CRLF
- = {
+ {
if ($2 && $4) {
struct stat stbuf;
if (stat((char *) $4, &stbuf) < 0)
@@ -575,17 +575,17 @@
free((char *) $4);
}
| QUIT CRLF
- = {
+ {
reply(221, "Goodbye.");
dologout(0);
}
| error CRLF
- = {
+ {
yyerrok;
}
;
rcmd: RNFR check_login SP pathname CRLF
- = {
+ {
char *renamefrom();
restart_point = (off_t) 0;
@@ -597,7 +597,7 @@
}
}
| REST SP byte_size CRLF
- = {
+ {
long atol();
fromname = (char *) 0;
@@ -611,7 +611,7 @@
;
password: /* empty */
- = {
+ {
*(char **)&($$) = (char *)calloc(1, sizeof(char));
}
| STRING
@@ -622,7 +622,7 @@
host_port: NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA
NUMBER COMMA NUMBER
- = {
+ {
register char *a, *p;
a = (char *)&data_dest.sin_addr;
@@ -648,91 +648,91 @@
;
form_code: N
- = {
+ {
$$ = FORM_N;
}
| T
- = {
+ {
$$ = FORM_T;
}
| C
- = {
+ {
$$ = FORM_C;
}
;
type_code: A
- = {
+ {
cmd_type = TYPE_A;
cmd_form = FORM_N;
}
| A SP form_code
- = {
+ {
cmd_type = TYPE_A;
cmd_form = $3;
}
| E
- = {
+ {
cmd_type = TYPE_E;
cmd_form = FORM_N;
}
| E SP form_code
- = {
+ {
cmd_type = TYPE_E;
cmd_form = $3;
}
| I
- = {
+ {
cmd_type = TYPE_I;
}
| L
- = {
+ {
cmd_type = TYPE_L;
cmd_bytesz = NBBY;
}
| L SP byte_size
- = {
+ {
cmd_type = TYPE_L;
cmd_bytesz = $3;
}
/* this is for a bug in the BBN ftp */
| L byte_size
- = {
+ {
cmd_type = TYPE_L;
cmd_bytesz = $2;
}
;
struct_code: F
- = {
+ {
$$ = STRU_F;
}
| R
- = {
+ {
$$ = STRU_R;
}
| P
- = {
+ {
$$ = STRU_P;
}
;
mode_code: S
- = {
+ {
$$ = MODE_S;
}
| B
- = {
+ {
$$ = MODE_B;
}
| C
- = {
+ {
$$ = MODE_C;
}
;
pathname: pathstring
- = {
+ {
/*
* Problem: this production is used for all pathname
* processing, but only gives a 550 error reply.
@@ -755,7 +755,7 @@
;
octal_number: NUMBER
- = {
+ {
register int ret, dec, multby, digit;
/*
@@ -780,7 +780,7 @@
;
check_login: /* empty */
- = {
+ {
if (logged_in)
$$ = 1;
else {