return 1;
ret = 1;  err: fclose(f); privileged_option = oldpriv; return ret;
options_from_file(filename, must_exist, check_prot)    char *filename;    int must_exist;    int check_prot;{    FILE *f;    int i, newline, ret;    struct cmd *cmdp;    char *argv[MAXARGS];    char args[MAXARGS][MAXWORDLEN];    char cmd[MAXWORDLEN];    if ((f = fopen(filename, "r")) == NULL) {	if (!must_exist && errno == ENOENT)	    return 1;        option_error("Can't open options file %s: %m", filename);	return 0;    }    if (check_prot && !readable(fileno(f))) {        option_error("Can't open options file %s: access denied", filename);	fclose(f);	return 0;    }    while (getword(f, cmd, &newline, filename)) {	/*	 * First see if it's a command.	 */	for (cmdp = cmds; cmdp->cmd_name; cmdp++)	    if (!strcmp(cmd, cmdp->cmd_name))		break;	if (cmdp->cmd_name != NULL) {	    for (i = 0; i < cmdp->num_args; ++i) {		if (!getword(f, args[i], &newline, filename)) {                    option_error(                        "In file %s: too few parameters for option '%s'",			    filename, cmd);		    fclose(f);		    return 0;		}		argv[i] = args[i];	    }            current_option = cmd;	    if (!(*cmdp->cmd_func)(argv)) {		fclose(f);		return 0;	    }	} else {	    /*	     * Maybe a tty name, speed or IP address?	     */            if ((ret = setdevname(cmd, 0)) == 0		&& (ret = setspeed(cmd)) == 0		&& (ret = setipaddr(cmd)) == 0) {                option_error("In file %s: unrecognized option '%s'",			filename, cmd);		fclose(f);		return 0;	    }	    if (ret < 0)	/* error */		return 0;	}    }    return 1;}