--- /dev/null
+/*
+ * Copyright (C) 2009 Michael Brown <mbrown@fensystems.co.uk>.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+/**
+ * @file
+ *
+ * Character types
+ *
+ */
+
+#include <ctype.h>
+
+/**
+ * Check to see if character is a space
+ *
+ * @v c Character
+ * @ret isspace Character is a space
+ */
+int isspace ( int c ) {
+ switch ( c ) {
+ case ' ' :
+ case '\f' :
+ case '\n' :
+ case '\r' :
+ case '\t' :
+ case '\v' :
+ return 1;
+ default:
+ return 0;
+ }
+}
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
+#include <ctype.h>
#include <unistd.h>
#include <getopt.h>
#include <errno.h>
while ( 1 ) {
/* Skip over any whitespace / convert to NUL */
- while ( *args == ' ' ) {
+ while ( isspace ( *args ) ) {
if ( argv )
*args = '\0';
args++;
argv[argc] = args;
argc++;
/* Skip to start of next whitespace, if any */
- while ( *args && ( *args != ' ' ) ) {
+ while ( *args && ! isspace ( *args ) ) {
args++;
}
}
FILE_LICENCE ( GPL2_OR_LATER );
#include <stdlib.h>
+#include <ctype.h>
#include <byteswap.h>
#include <gpxe/in.h>
#include <gpxe/timer.h>
return 0;
}
-int isspace ( int c ) {
- switch ( c ) {
- case ' ':
- case '\f':
- case '\n':
- case '\r':
- case '\t':
- case '\v':
- return 1;
- default:
- return 0;
- }
-}
-
unsigned long strtoul ( const char *p, char **endp, int base ) {
unsigned long ret = 0;
unsigned int charval;
#include <string.h>
#include <stdlib.h>
+#include <ctype.h>
#include <errno.h>
#include <gpxe/image.h>
* @ret rc Return status code
*/
static int script_load ( struct image *image ) {
- static const char magic[] = "#!gpxe\n";
- char test[ sizeof ( magic ) - 1 ];
+ static const char magic[] = "#!gpxe";
+ char test[ sizeof ( magic ) - 1 /* NUL */ + 1 /* terminating space */];
/* Sanity check */
if ( image->len < sizeof ( test ) ) {
/* Check for magic signature */
copy_from_user ( test, image->data, 0, sizeof ( test ) );
- if ( memcmp ( test, magic, sizeof ( test ) ) != 0 ) {
+ if ( ( memcmp ( test, magic, ( sizeof ( test ) - 1 ) ) != 0 ) ||
+ ! isspace ( test[ sizeof ( test ) - 1 ] ) ) {
DBG ( "Invalid magic signature\n" );
return -ENOEXEC;
}
return c;
}
+extern int isspace ( int c );
+
#endif /* _CTYPE_H */