reiserfs_warning (s, "reiserfs_parse_options: bad value %s", arg);			return 0; 
reiserfs_warning (s, "reiserfs_parse_options: bad value %s", arg); return 0; 
static int reiserfs_parse_options (struct super_block * s, char * options, /* string given via mount's -o */				   unsigned long * mount_options,				   /* after the parsing phase, contains the				      collection of bitflags defining what				      mount options were selected. */				   unsigned long * blocks, /* strtol-ed from NNN of resize=NNN */				   char ** jdev_name,				   unsigned int * commit_max_age){    int c;    char * arg = NULL;    char * pos;    opt_desc_t opts[] = {	/* Compatibility stuff, so that -o notail for old setups still work */	{"tails",	.arg_required = 't', .values = tails},	{"notail",	.clrmask = (1<<REISERFS_LARGETAIL)|(1<<REISERFS_SMALLTAIL)},	{"conv",	.setmask = 1<<REISERFS_CONVERT},	{"attrs",	.setmask = 1<<REISERFS_ATTRS},	{"noattrs",	.clrmask = 1<<REISERFS_ATTRS},#ifdef CONFIG_REISERFS_FS_XATTR	{"user_xattr",	.setmask = 1<<REISERFS_XATTRS_USER},	{"nouser_xattr",.clrmask = 1<<REISERFS_XATTRS_USER},#else	{"user_xattr",	.setmask = 1<<REISERFS_UNSUPPORTED_OPT},	{"nouser_xattr",.clrmask = 1<<REISERFS_UNSUPPORTED_OPT},#endif#ifdef CONFIG_REISERFS_FS_POSIX_ACL	{"acl",		.setmask = 1<<REISERFS_POSIXACL},	{"noacl",	.clrmask = 1<<REISERFS_POSIXACL},#else	{"acl",		.setmask = 1<<REISERFS_UNSUPPORTED_OPT},	{"noacl",	.clrmask = 1<<REISERFS_UNSUPPORTED_OPT},#endif	{"nolog",},	 /* This is unsupported */	{"replayonly",	.setmask = 1<<REPLAYONLY},	{"block-allocator", .arg_required = 'a', .values = balloc},	{"data",	.arg_required = 'd', .values = logging_mode},	{"barrier",	.arg_required = 'b', .values = barrier_mode},	{"resize",	.arg_required = 'r', .values = NULL},	{"jdev",	.arg_required = 'j', .values = NULL},	{"nolargeio",	.arg_required = 'w', .values = NULL},	{"commit",	.arg_required = 'c', .values = NULL},	{"usrquota",},	{"grpquota",},	{"errors", 	.arg_required = 'e', .values = error_actions},	{"usrjquota",	.arg_required = 'u'|(1<<REISERFS_OPT_ALLOWEMPTY), .values = NULL},	{"grpjquota",	.arg_required = 'g'|(1<<REISERFS_OPT_ALLOWEMPTY), .values = NULL},	{"jqfmt",	.arg_required = 'f', .values = NULL},	{NULL,}    };	    *blocks = 0;    if (!options || !*options)	/* use default configuration: create tails, journaling on, no	   conversion to newest format */	return 1;        for (pos = options; pos; ) {	c = reiserfs_getopt (s, &pos, opts, &arg, mount_options);	if (c == -1)	    /* wrong option is given */	    return 0;		if (c == 'r') {	    char * p;	    	    p = NULL;	    /* "resize=NNN" */	    *blocks = simple_strtoul (arg, &p, 0);	    if (*p != '\0') {		/* NNN does not look like a number */		reiserfs_warning (s, "reiserfs_parse_options: bad value %s", arg);		return 0;	    }	}	if ( c == 'c' ) {		char *p = NULL;		unsigned long val = simple_strtoul (arg, &p, 0);		/* commit=NNN (time in seconds) */		if ( *p != '\0' || val >= (unsigned int)-1) {			reiserfs_warning (s, "reiserfs_parse_options: bad value %s", arg);			return 0;		}		*commit_max_age = (unsigned int)val;	}	if ( c == 'w' ) {		char *p=NULL;		int val = simple_strtoul (arg, &p, 0);		if ( *p != '\0') {		    reiserfs_warning (s, "reiserfs_parse_options: non-numeric value %s for nolargeio option", arg);		    return 0;		}		if ( val ) 		    reiserfs_default_io_size = PAGE_SIZE;		else		    reiserfs_default_io_size = 128 * 1024;	}	if (c == 'j') {	    if (arg && *arg && jdev_name) {		if ( *jdev_name ) { //Hm, already assigned?		    reiserfs_warning (s, "reiserfs_parse_options: journal device was already  specified to be %s", *jdev_name);		    return 0;		}		*jdev_name = arg;	    }	}#ifdef CONFIG_QUOTA	if (c == 'u' || c == 'g') {	    int qtype = c == 'u' ? USRQUOTA : GRPQUOTA;	    if (sb_any_quota_enabled(s)) {		reiserfs_warning(s, "reiserfs_parse_options: cannot change journalled quota options when quota turned on.");		return 0;	    }	    if (*arg) {	/* Some filename specified? */	        if (REISERFS_SB(s)->s_qf_names[qtype] && strcmp(REISERFS_SB(s)->s_qf_names[qtype], arg)) {		    reiserfs_warning(s, "reiserfs_parse_options: %s quota file already specified.", QTYPE2NAME(qtype));		    return 0;		}		if (strchr(arg, '/')) {		    reiserfs_warning(s, "reiserfs_parse_options: quotafile must be on filesystem root.");		    return 0;		}	    	REISERFS_SB(s)->s_qf_names[qtype] = kmalloc(strlen(arg)+1, GFP_KERNEL);		if (!REISERFS_SB(s)->s_qf_names[qtype]) {		    reiserfs_warning(s, "reiserfs_parse_options: not enough memory for storing quotafile name.");		    return 0;		}		strcpy(REISERFS_SB(s)->s_qf_names[qtype], arg);	    }	    else {		if (REISERFS_SB(s)->s_qf_names[qtype]) {		    kfree(REISERFS_SB(s)->s_qf_names[qtype]);		    REISERFS_SB(s)->s_qf_names[qtype] = NULL;		}	    }	}	if (c == 'f') {	    if (!strcmp(arg, "vfsold"))		REISERFS_SB(s)->s_jquota_fmt = QFMT_VFS_OLD;	    else if (!strcmp(arg, "vfsv0"))		REISERFS_SB(s)->s_jquota_fmt = QFMT_VFS_V0;	    else {		reiserfs_warning(s, "reiserfs_parse_options: unknown quota format specified.");		return 0;	    }	}#else	if (c == 'u' || c == 'g' || c == 'f') {	    reiserfs_warning(s, "reiserfs_parse_options: journalled quota options not supported.");	    return 0;	}#endif    }    #ifdef CONFIG_QUOTA    if (!REISERFS_SB(s)->s_jquota_fmt && (REISERFS_SB(s)->s_qf_names[USRQUOTA] || REISERFS_SB(s)->s_qf_names[GRPQUOTA])) {	reiserfs_warning(s, "reiserfs_parse_options: journalled quota format not specified.");	return 0;    }#endif    return 1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/9a3bb3017383fbb6fe56431d17f60bd0d50f0717/super.c/buggy/fs/reiserfs/super.c