Skip Menu |
 

To: krb5-bugs@mit.edu
Cc: 165655-forwarded@bugs.debian.org
Subject: [Daniel Schepler <schepler@math.berkeley.edu>] Bug#165655: krb5: FTBFS with new bison
From: Sam Hartman <hartmans@debian.org>
Date: Sun, 20 Oct 2002 19:41:50 -0400

Bison seems to have decided that being yacc compatible is too good for
them; they have broken Openafs, Krb5, XFree86 and others.

e I guess we want to deal for 1.3.
Download (untitled)
message/rfc822 3.3KiB
Return-Path: <debbugs@master.debian.org>
Received: from solipsist-nation ([unix socket])
by solipsist-nation (Cyrus v2.1.5-Debian2.1.5-1) with LMTP; Sun, 20 Oct
2002 19:18:21 -0400
X-Sieve: CMU Sieve 2.2
Return-Path: <debbugs@master.debian.org>
Received: from fort-point-station.mit.edu (FORT-POINT-STATION.MIT.EDU
[18.7.7.76])
by suchdamage.org (Postfix) with ESMTP id 74E1B13183
for <hartmans@suchdamage.org>; Sun, 20 Oct 2002 19:18:20 -0400 (EDT)
Received: from master.debian.org (master.debian.org [65.125.64.135])
by fort-point-station.mit.edu (8.9.2/8.9.2) with ESMTP id TAA29015
for <hartmans@mit.edu>; Sun, 20 Oct 2002 19:18:19 -0400 (EDT)
Received: from debbugs by master.debian.org with local (Exim 3.12 1
(Debian))
id 183PKm-0000VE-00; Sun, 20 Oct 2002 18:18:12 -0500
X-Loop: owner@bugs.debian.org
Subject: Bug#165655: krb5: FTBFS with new bison
Reply-To: Daniel Schepler <schepler@math.berkeley.edu>,
165655@bugs.debian.org
Resent-From: Daniel Schepler <schepler@math.berkeley.edu>
Original-Sender: Daniel Schepler <daniel@frobnitz.ddts.net>
Resent-To: debian-bugs-dist@lists.debian.org
Resent-Cc: Sam Hartman <hartmans@debian.org>,
krb5@packages.qa.debian.org
Resent-Date: Sun, 20 Oct 2002 23:18:09 GMT
Resent-Message-ID: <handler.165655.B.10351558051506@bugs.debian.org>
X-Debian-PR-Message: report 165655
X-Debian-PR-Package: krb5
Received: via spool by submit@bugs.debian.org id=B.10351558051506
(code B ref -1); Sun, 20 Oct 2002 23:18:09 GMT
To: Debian Bug Tracking System <submit@bugs.debian.org>
From: Daniel Schepler <schepler@math.berkeley.edu>
Date: 20 Oct 2002 16:16:39 -0700
Message-ID: <874rbglmzs.fsf@frobnitz.ddts.net>
Lines: 33
Sender: Daniel Schepler <daniel@frobnitz.ddts.net>
Delivered-To: submit@bugs.debian.org
Resent-Sender: Debian BTS <debbugs@master.debian.org>
X-Spam-Status: No, hits=-4.5 required=5.0
tests=SENT_BY_BTS,FORGED_RCVD_FOUND version=2.20
X-Spam-Level:
MIME-Version: 1.0

Package: krb5
Version: 1.2.6-1
Severity: important

From my build log:

bison -y ../../../../src/appl/gssftp/ftpd/ftpcmd.y
../../../../src/appl/gssftp/ftpd/ftpcmd.y:207.3: parse error, unexpected "=", expecting ";" or "|"
../../../../src/appl/gssftp/ftpd/ftpcmd.y:215.3: parse error, unexpected "=", expecting ";" or "|"
../../../../src/appl/gssftp/ftpd/ftpcmd.y:244.5-245.9: $2 of `cmd' has no declared type
../../../../src/appl/gssftp/ftpd/ftpcmd.y:361.5-362.9: $2 of `cmd' has no declared type
...
../../../../src/appl/gssftp/ftpd/ftpcmd.y:869.2: parse error, unexpected "=", expecting ";" or "|"
make[4]: *** [ftpcmd.c] Error 1
make[4]: Leaving directory `/home/daniel/src/debian/k/krb5/krb5-1.2.6/build/appl/gssftp/ftpd'
make[3]: *** [all-recurse] Error 1
make[3]: Leaving directory `/home/daniel/src/debian/k/krb5/krb5-1.2.6/build/appl/gssftp'
make[2]: *** [all-recurse] Error 1
make[2]: Leaving directory `/home/daniel/src/debian/k/krb5/krb5-1.2.6/build/appl'
make[1]: *** [all-recurse] Error 1
make[1]: Leaving directory `/home/daniel/src/debian/k/krb5/krb5-1.2.6/build'
make: *** [build-stamp] Error 2

This is with bison 1:1.75-1 installed.

-- System Information
Debian Release: testing/unstable
Kernel Version: Linux frobnitz 2.4.19 #2 Sun Aug 18 15:52:57 PDT 2002 i686 AMD Duron(tm) Processor AuthenticAMD GNU/Linux

--
Daniel Schepler "Please don't disillusion me. I
schepler@math.berkeley.edu haven't had breakfast yet."
-- Orson Scott Card
Download (untitled) / with headers
text/plain 16.8KiB
The following patch should solve the problem. Essentialy the '=' is not
required by yacc specifications. (no wheer else in the tree do we
require it). I will be checking in this change shortly.

Index: ftpcmd.y
===================================================================
RCS file: /cvs/krbdev/krb5/src/appl/gssftp/ftpd/ftpcmd.y,v
retrieving revision 1.24
diff -c -r1.24 ftpcmd.y
*** ftpcmd.y 2002/03/07 00:21:38 1.24
--- ftpcmd.y 2002/10/23 14:13:07
***************
*** 202,208 ****

cmd_list: /* empty */
| cmd_list cmd
! = {
fromname = (char *) 0;
restart_point = (off_t) 0;
}
--- 202,208 ----

cmd_list: /* empty */
| cmd_list cmd
! {
fromname = (char *) 0;
restart_point = (off_t) 0;
}
***************
*** 210,226 ****
;

cmd: USER SP username CRLF
! = {
user((char *) $3);
free((char *) $3);
}
| PASS SP password CRLF
! = {
pass((char *) $3);
free((char *) $3);
}
| PORT SP host_port CRLF
! = {
/*
* Don't allow a port < 1024 if we're not
* connecting back to the original source address
--- 210,226 ----
;

cmd: USER SP username CRLF
! {
user((char *) $3);
free((char *) $3);
}
| PASS SP password CRLF
! {
pass((char *) $3);
free((char *) $3);
}
| PORT SP host_port CRLF
! {
/*
* Don't allow a port < 1024 if we're not
* connecting back to the original source address
***************
*** 239,257 ****
}
}
| PASV check_login CRLF
! = {
if ($2)
passive();
}
| PROT SP prot_code CRLF
! = {
if (maxbuf)
setdlevel ($3);
else
reply(503, "Must first set PBSZ");
}
| CCC CRLF
! = {
if (!allow_ccc) {
reply(534, "CCC not supported");
}
--- 239,257 ----
}
}
| PASV check_login CRLF
! {
if ($2)
passive();
}
| PROT SP prot_code CRLF
! {
if (maxbuf)
setdlevel ($3);
else
reply(503, "Must first set PBSZ");
}
| CCC CRLF
! {
if (!allow_ccc) {
reply(534, "CCC not supported");
}
***************
*** 265,271 ****
}
}
| PBSZ SP STRING CRLF
! = {
/* Others may want to do something more fancy here */
if (!auth_type)
reply(503, "Must first perform authentication");
--- 265,271 ----
}
}
| PBSZ SP STRING CRLF
! {
/* Others may want to do something more fancy here */
if (!auth_type)
reply(503, "Must first perform authentication");
***************
*** 290,296 ****
}
}
| TYPE SP type_code CRLF
! = {
switch (cmd_type) {

case TYPE_A:
--- 290,296 ----
}
}
| TYPE SP type_code CRLF
! {
switch (cmd_type) {

case TYPE_A:
***************
*** 325,331 ****
}
}
| STRU SP struct_code CRLF
! = {
switch ($3) {

case STRU_F:
--- 325,331 ----
}
}
| STRU SP struct_code CRLF
! {
switch ($3) {

case STRU_F:
***************
*** 337,343 ****
}
}
| MODE SP mode_code CRLF
! = {
switch ($3) {

case MODE_S:
--- 337,343 ----
}
}
| MODE SP mode_code CRLF
! {
switch ($3) {

case MODE_S:
***************
*** 349,426 ****
}
}
| 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 != NULL)
retrieve((char *) 0, (char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| STOR check_login SP pathname CRLF
! = {
if ($2 && $4 != NULL)
store_file((char *) $4, "w", 0);
if ($4 != NULL)
free((char *) $4);
}
| APPE check_login SP pathname CRLF
! = {
if ($2 && $4 != NULL)
store_file((char *) $4, "a", 0);
if ($4 != NULL)
free((char *) $4);
}
| NLST check_login CRLF
! = {
if ($2)
send_file_list(".");
}
| NLST check_login SP STRING CRLF
! = {
if ($2 && $4 != NULL)
send_file_list((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| LIST check_login CRLF
! = {
if ($2)
retrieve("/bin/ls -lgA", "");
}
| LIST check_login SP pathname CRLF
! = {
if ($2 && $4 != NULL)
retrieve("/bin/ls -lgA %s", (char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| STAT check_login SP pathname CRLF
! = {
if ($2 && $4 != NULL)
statfilecmd((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| STAT CRLF
! = {
statcmd();
}
| DELE check_login SP pathname CRLF
! = {
if ($2 && $4 != NULL)
delete_file((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| RNTO SP pathname CRLF
! = {
if (fromname) {
renamecmd(fromname, (char *) $3);
free(fromname);
--- 349,426 ----
}
}
| 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 != NULL)
retrieve((char *) 0, (char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| STOR check_login SP pathname CRLF
! {
if ($2 && $4 != NULL)
store_file((char *) $4, "w", 0);
if ($4 != NULL)
free((char *) $4);
}
| APPE check_login SP pathname CRLF
! {
if ($2 && $4 != NULL)
store_file((char *) $4, "a", 0);
if ($4 != NULL)
free((char *) $4);
}
| NLST check_login CRLF
! {
if ($2)
send_file_list(".");
}
| NLST check_login SP STRING CRLF
! {
if ($2 && $4 != NULL)
send_file_list((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| LIST check_login CRLF
! {
if ($2)
retrieve("/bin/ls -lgA", "");
}
| LIST check_login SP pathname CRLF
! {
if ($2 && $4 != NULL)
retrieve("/bin/ls -lgA %s", (char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| STAT check_login SP pathname CRLF
! {
if ($2 && $4 != NULL)
statfilecmd((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| STAT CRLF
! {
statcmd();
}
| DELE check_login SP pathname CRLF
! {
if ($2 && $4 != NULL)
delete_file((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| RNTO SP pathname CRLF
! {
if (fromname) {
renamecmd(fromname, (char *) $3);
free(fromname);
***************
*** 431,457 ****
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 != NULL)
cwd((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| HELP CRLF
! = {
help(cmdtab, (char *) 0);
}
| HELP SP STRING CRLF
! = {
register char *cp = (char *)$3;

if (strncasecmp(cp, "SITE", 4) == 0) {
--- 431,457 ----
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 != NULL)
cwd((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| HELP CRLF
! {
help(cmdtab, (char *) 0);
}
| HELP SP STRING CRLF
! {
register char *cp = (char *)$3;

if (strncasecmp(cp, "SITE", 4) == 0) {
***************
*** 466,508 ****
help(cmdtab, (char *) $3);
}
| NOOP CRLF
! = {
reply(200, "NOOP command successful.");
}
| MKD nonguest SP pathname CRLF
! = {
if ($2 && $4 != NULL)
makedir((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| RMD nonguest SP pathname CRLF
! = {
if ($2 && $4 != NULL)
removedir((char *) $4);
if ($4 != NULL)
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) {
--- 466,508 ----
help(cmdtab, (char *) $3);
}
| NOOP CRLF
! {
reply(200, "NOOP command successful.");
}
| MKD nonguest SP pathname CRLF
! {
if ($2 && $4 != NULL)
makedir((char *) $4);
if ($4 != NULL)
free((char *) $4);
}
| RMD nonguest SP pathname CRLF
! {
if ($2 && $4 != NULL)
removedir((char *) $4);
if ($4 != NULL)
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) {
***************
*** 512,518 ****
}
}
| SITE SP UMASK nonguest SP octal_number CRLF
! = {
int oldmask;

if ($4) {
--- 512,518 ----
}
}
| SITE SP UMASK nonguest SP octal_number CRLF
! {
int oldmask;

if ($4) {
***************
*** 527,533 ****
}
}
| SITE SP CHMOD nonguest SP octal_number SP pathname CRLF
! = {
if ($4 && ($8 != NULL)) {
if ($6 > 0777)
reply(501,
--- 527,533 ----
}
}
| SITE SP CHMOD nonguest SP octal_number SP pathname CRLF
! {
if ($4 && ($8 != NULL)) {
if ($6 > 0777)
reply(501,
***************
*** 541,553 ****
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",
--- 541,553 ----
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",
***************
*** 561,574 ****
}
}
| STOU check_login SP pathname CRLF
! = {
if ($2 && $4 != NULL)
store_file((char *) $4, "w", 1);
if ($4 != NULL)
free((char *) $4);
}
| SYST CRLF
! = {
#ifdef unix
#ifdef __svr4__
#undef BSD
--- 561,574 ----
}
}
| STOU check_login SP pathname CRLF
! {
if ($2 && $4 != NULL)
store_file((char *) $4, "w", 1);
if ($4 != NULL)
free((char *) $4);
}
| SYST CRLF
! {
#ifdef unix
#ifdef __svr4__
#undef BSD
***************
*** 592,598 ****
* using with RESTART (we just count bytes).
*/
| SIZE check_login SP pathname CRLF
! = {
if ($2 && $4 != NULL)
sizecmd((char *) $4);
if ($4 != NULL)
--- 592,598 ----
* using with RESTART (we just count bytes).
*/
| SIZE check_login SP pathname CRLF
! {
if ($2 && $4 != NULL)
sizecmd((char *) $4);
if ($4 != NULL)
***************
*** 609,615 ****
* not necessarily 3 digits)
*/
| MDTM check_login SP pathname CRLF
! = {
if ($2 && $4 != NULL) {
struct stat stbuf;
if (stat($4, &stbuf) < 0)
--- 609,615 ----
* not necessarily 3 digits)
*/
| MDTM check_login SP pathname CRLF
! {
if ($2 && $4 != NULL) {
struct stat stbuf;
if (stat($4, &stbuf) < 0)
***************
*** 632,657 ****
free((char *) $4);
}
| AUTH SP STRING CRLF
! = {
auth((char *) $3);
}
| ADAT SP STRING CRLF
! = {
auth_data((char *) $3);
free((char *) $3);
}
| QUIT CRLF
! = {
reply(221, "Goodbye.");
dologout(0);
}
| error CRLF
! = {
yyerrok;
}
;
rcmd: RNFR check_login SP pathname CRLF
! = {
restart_point = (off_t) 0;
if ($2 && $4) {
fromname = renamefrom((char *) $4);
--- 632,657 ----
free((char *) $4);
}
| AUTH SP STRING CRLF
! {
auth((char *) $3);
}
| ADAT SP STRING CRLF
! {
auth_data((char *) $3);
free((char *) $3);
}
| QUIT CRLF
! {
reply(221, "Goodbye.");
dologout(0);
}
| error CRLF
! {
yyerrok;
}
;
rcmd: RNFR check_login SP pathname CRLF
! {
restart_point = (off_t) 0;
if ($2 && $4) {
fromname = renamefrom((char *) $4);
***************
*** 661,667 ****
}
}
| REST SP byte_size CRLF
! = {
fromname = (char *) 0;
restart_point = $3;
reply(350, "Restarting at %ld. %s",
--- 661,667 ----
}
}
| REST SP byte_size CRLF
! {
fromname = (char *) 0;
restart_point = $3;
reply(350, "Restarting at %ld. %s",
***************
*** 674,680 ****
;

password: /* empty */
! = {
*(char **)&($$) = (char *)calloc(1, sizeof(char));
}
| STRING
--- 674,680 ----
;

password: /* empty */
! {
*(char **)&($$) = (char *)calloc(1, sizeof(char));
}
| STRING
***************
*** 685,691 ****

host_port: NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA
NUMBER COMMA NUMBER
! = {
register char *a, *p;

a = (char *)&host_port.sin_addr;
--- 685,691 ----

host_port: NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA
NUMBER COMMA NUMBER
! {
register char *a, *p;

a = (char *)&host_port.sin_addr;
***************
*** 697,805 ****
;

form_code: 'N'
! = {
$$ = FORM_N;
}
| 'T'
! = {
$$ = FORM_T;
}
| 'C'
! = {
$$ = FORM_C;
}
;

prot_code: 'C'
! = {
$$ = PROT_C;
}
| 'S'
! = {
$$ = PROT_S;
}
| 'P'
! = {
$$ = PROT_P;
}
| 'E'
! = {
$$ = PROT_E;
}
;

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.
--- 697,805 ----
;

form_code: 'N'
! {
$$ = FORM_N;
}
| 'T'
! {
$$ = FORM_T;
}
| 'C'
! {
$$ = FORM_C;
}
;

prot_code: 'C'
! {
$$ = PROT_C;
}
| 'S'
! {
$$ = PROT_S;
}
| 'P'
! {
$$ = PROT_P;
}
| 'E'
! {
$$ = PROT_E;
}
;

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.
***************
*** 828,834 ****
;

octal_number: NUMBER
! = {
register int ret, dec, multby, digit;

/*
--- 828,834 ----
;

octal_number: NUMBER
! {
register int ret, dec, multby, digit;

/*
***************
*** 853,859 ****
;

check_login: /* empty */
! = {
if (logged_in)
$$ = 1;
else {
--- 853,859 ----
;

check_login: /* empty */
! {
if (logged_in)
$$ = 1;
else {
***************
*** 864,870 ****
;

nonguest: check_login
! = {
if (guest) {
reply(550, "Operation prohibited for anonymous users.");
$$ = 0;
--- 864,870 ----
;

nonguest: check_login
! {
if (guest) {
reply(550, "Operation prohibited for anonymous users.");
$$ = 0;
From: epeisach@mit.edu
Subject: CVS Commit
* ftpcmd.y: Bison 1.75 cleanup. Essentially remove `=' before
statements to be executed.


To generate a diff of this commit:



cvs diff -r1.99 -r1.100 krb5/src/appl/gssftp/ftpd/ChangeLog
cvs diff -r1.24 -r1.25 krb5/src/appl/gssftp/ftpd/ftpcmd.y
From: tlyu@mit.edu
Subject: CVS Commit
pull up from trunk


To generate a diff of this commit:



cvs diff -r1.64.2.3.2.6 -r1.64.2.3.2.7
krb5/src/appl/gssftp/ftpd/ChangeLog
cvs diff -r1.14.4.2.2.3 -r1.14.4.2.2.4
krb5/src/appl/gssftp/ftpd/ftpcmd.y