=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sudo/Attic/fileops.c,v retrieving revision 1.5 retrieving revision 1.6 diff -c -r1.5 -r1.6 *** src/usr.bin/sudo/Attic/fileops.c 2007/07/26 16:10:16 1.5 --- src/usr.bin/sudo/Attic/fileops.c 2008/11/14 11:58:08 1.6 *************** *** 1,5 **** /* ! * Copyright (c) 1999-2005 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above --- 1,5 ---- /* ! * Copyright (c) 1999-2005, 2007 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above *************** *** 27,32 **** --- 27,41 ---- # include #endif /* HAVE_FLOCK */ #include + #ifdef HAVE_STRING_H + # include + #else + # ifdef HAVE_STRINGS_H + # include + # endif + #endif /* HAVE_STRING_H */ + #include + #include #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ *************** *** 40,47 **** #include "sudo.h" #ifndef lint ! __unused static const char rcsid[] = "$Sudo: fileops.c,v 1.5.2.5 2007/06/12 01:28:41 millert Exp $"; #endif /* lint */ /* --- 49,60 ---- #include "sudo.h" + #ifndef LINE_MAX + # define LINE_MAX 2048 + #endif + #ifndef lint ! __unused static const char rcsid[] = "$Sudo: fileops.c,v 1.16 2008/11/09 14:13:12 millert Exp $"; #endif /* lint */ /* *************** *** 139,141 **** --- 152,181 ---- #endif } #endif + + /* + * Read a line of input, remove comments and strip off leading + * and trailing spaces. Returns static storage that is reused. + */ + char * + sudo_parseln(fp) + FILE *fp; + { + size_t len; + char *cp = NULL; + static char buf[LINE_MAX]; + + if (fgets(buf, sizeof(buf), fp) != NULL) { + /* Remove comments */ + if ((cp = strchr(buf, '#')) != NULL) + *cp = '\0'; + + /* Trim leading and trailing whitespace/newline */ + len = strlen(buf); + while (len > 0 && isspace(buf[len - 1])) + buf[--len] = '\0'; + for (cp = buf; isblank(*cp); cp++) + continue; + } + return(cp); + }