⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xpbs_scriptload.c

📁 openPBS的开放源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
#if !defined(PBS_NO_POSIX_VIOLATION)	case 'I':	    if_cmd_line(Interact_opt) {		Interact_opt = passet;	    }	    break;#endif	/* PBS_NO_POSIX_VIOLATION */        case 'j':            if_cmd_line(j_opt) {                j_opt = passet;		if ( strcmp(optarg, "oe") != 0 &&		     strcmp(optarg, "eo") != 0 &&		     strcmp(optarg,  "n") != 0 ) {		    fprintf(stderr, "scriptload: illegal -j value\n");		    errflg++;		    break;		}		printf("%s = %s\n", ATTR_j, optarg);             }            break;        case 'k':            if_cmd_line(k_opt) {                k_opt = passet;		if ( strcmp(optarg,  "o") != 0 &&		     strcmp(optarg,  "e") != 0 &&		     strcmp(optarg, "oe") != 0 &&		     strcmp(optarg, "eo") != 0 &&		     strcmp(optarg,  "n") != 0 ) {		    fprintf(stderr, "scriptload: illegal -k value\n");		    errflg++;		    break;		}		printf("%s = %s\n", ATTR_k, optarg);             }            break;        case 'l':            l_opt = passet;            if ( set_resources(&attrib, optarg, (pass==0)) ) {		fprintf(stderr, "scriptload: illegal -l value\n");		errflg++;	    }	    printf("Resource_List = %s\n", optarg);             break;        case 'm':            if_cmd_line(m_opt) {                m_opt = passet;		while ( isspace((int)*optarg) ) optarg++;		if ( strlen(optarg) == 0 ) {		    fprintf(stderr, "scriptload: illegal -m value\n");		    errflg++;		    break;		}		if ( strcmp(optarg, "n") != 0 ) {		    pc = optarg;		    while (*pc) {			if ( *pc != 'a' && *pc != 'b' && *pc != 'e' ) {		            fprintf(stderr, "scriptload: illegal -m value\n");		            errflg++;			    break;			}			pc++;		    }		}	        printf("%s = %s\n", ATTR_m, optarg);             }            break;        case 'M':            if_cmd_line(M_opt) {                M_opt = passet;		if ( parse_at_list(optarg, FALSE, FALSE) ) {	            fprintf(stderr, "scriptload: illegal -M value\n");	            errflg++;		    break;		}	        printf("%s = %s\n", ATTR_M, optarg);             }            break;        case 'N':            if_cmd_line(N_opt) {                N_opt = passet;		if (check_job_name(optarg, 1) == 0) {	            printf("%s = %s\n", ATTR_N, optarg); 		} else {		    fprintf(stderr, "scriptload: illegal -N value\n");		    errflg++;		}            }            break;        case 'o':            if_cmd_line(o_opt) {                o_opt = passet;                if ( prepare_path(optarg, path_out) == 0 ) {	            printf("%s = %s\n", ATTR_o, path_out);                 } else {                    fprintf(stderr, "scriptload: illegal -o value\n");                    errflg++;                }            }            break;        case 'p':            if_cmd_line(p_opt) {                p_opt = passet;		while ( isspace((int)*optarg) ) optarg++;		pc = optarg;		if ( *pc == '-' || *pc == '+' ) pc++;		if ( strlen(pc) == 0 ) {		    fprintf(stderr, "scriptload: illegal -p value\n");		    errflg++;		    break;		}		while ( *pc != '\0' ) {		    if ( ! isdigit(*pc) ) {			fprintf(stderr, "scriptload: illegal -p value\n");			errflg++;			break;		    }		    pc++;		}		i = atoi(optarg);		if ( i < -1024 || i > 1023 ) {		    fprintf(stderr, "scriptload: illegal -p value\n");		    errflg++;		    break;		}	        printf("%s = %s\n", ATTR_p, optarg);             }            break;        case 'q':            if_cmd_line(q_opt) {                q_opt = passet;                strcpy(destination, optarg);	        printf("%s = %s\n", ATTR_queue, optarg);             }            break;        case 'r':            if_cmd_line(r_opt) {                r_opt = passet;		if ( strlen(optarg) != 1 ) {		    fprintf(stderr, "scriptload: illegal -r value\n");		    errflg++;		    break;		}		if ( *optarg != 'y' && *optarg != 'n' ) {		    fprintf(stderr, "scriptload: illegal -r value\n");		    errflg++;		    break;		}		if (*optarg == 'y')	          printf("%s = True\n", ATTR_r); 		else	          printf("%s = False\n", ATTR_r); 	                    }            break;        case 'S':            if_cmd_line(S_opt) {                S_opt = passet;		if ( parse_at_list(optarg, TRUE, TRUE) ) {	            fprintf(stderr, "scriptload: illegal -S value\n");	            errflg++;		    break;		}	        printf("%s = %s\n", ATTR_S, optarg);             }            break;        case 'u':            if_cmd_line(u_opt) {                u_opt = passet;		if ( parse_at_list(optarg, TRUE, FALSE) ) {	            fprintf(stderr, "scriptload: illegal -u value\n");	            errflg++;		    break;		}	        printf("%s = %s\n", ATTR_u, optarg);             }            break;        case 'v':            if_cmd_line(v_opt) {                v_opt = passet;		if ( v_value != (char *)0 ) free(v_value);		v_value = (char *) malloc(strlen(optarg)+1);		if ( v_value == (char *)0 ) {		    fprintf(stderr, "scriptload: out of memory\n");		    errflg++;		    break;		}                strcpy(v_value, optarg);	        printf("Variable_List = %s\n", optarg);             }            break;        case 'V':            if_cmd_line(V_opt) {                V_opt = passet;	        printf("Export_Current_Env = %d\n", TRUE);             }            break;        case 'W':	    while ( isspace((int)*optarg) ) optarg++;	    if ( strlen(optarg) == 0 ) {		fprintf(stderr, "scriptload: illegal -W value\n");		errflg++;		break;	    }	    i = parse_equal_string(optarg, &keyword, &valuewd);	    while (i == 1) {		if (strcmp(keyword, ATTR_depend) == 0) {            	    if_cmd_line(Depend_opt) {                	Depend_opt = passet;			pdepend = malloc(PBS_DEPEND_LEN);			if (parse_depend_list(valuewd,pdepend,PBS_DEPEND_LEN)) {			    fprintf(stderr, "scriptload: illegal -W value\n");			    errflg++;			    break;			}	                printf("%s = %s\n", ATTR_depend, pdepend); 		    }		} else if (strcmp(keyword, ATTR_stagein) == 0) {            	    if_cmd_line(Stagein_opt) {                	Stagein_opt = passet;			if ( parse_stage_list(valuewd) ) {			    fprintf(stderr, "scriptload: illegal -W value\n");			    errflg++;			    break;			}	                printf("%s = %s\n", ATTR_stagein, valuewd); 		    }		} else if (strcmp(keyword, ATTR_stageout) == 0) {            	    if_cmd_line(Stageout_opt) {                	Stageout_opt = passet;                        if ( parse_stage_list(valuewd) ) {                            fprintf(stderr, "scriptload: illegal -W value\n");                            errflg++;			    break;                        }	                printf("%s = %s\n", ATTR_stageout, valuewd); 		    }		} else if (strcmp(keyword, ATTR_g) == 0) {		    if_cmd_line(Grouplist_opt) {			Grouplist_opt = passet;                	if ( parse_at_list(valuewd, TRUE, FALSE) ) {                	    fprintf(stderr, "scriptload: illegal -W value\n");                	    errflg++;			    break;                	}	                printf("%s = %s\n", ATTR_g, valuewd); 		    }		} else if (strcmp(keyword, ATTR_inter) == 0) {		    if_cmd_line(Interact_opt) {			Interact_opt = passet;			if ( strcmp(valuewd, "true") != 0 ) {			    fprintf(stderr, "scriptload: illegal -W value\n");			    errflg++;			    break;			}		    }		} else {			set_attr(&attrib, keyword, valuewd);		}		i = parse_equal_string((char *)0, &keyword, &valuewd);            }	    if (i == -1) {		fprintf(stderr, "scriptload: illegal -W value\n");		errflg++;	    }            break;        case 'z':            if_cmd_line(z_opt) {		z_opt = passet;	    }	            break;        case '?':        default :            errflg++;        }    }    if ( !errflg && pass ) {        errflg = (optind != argc);	if ( errflg ) {	    fprintf(stderr, "scriptload: directive error: ");	    for (optind=1; optind<argc; optind++)	    	fprintf(stderr, "%s ", argv[optind]);	    fprintf(stderr, "\n");	}    }    return (errflg);}intdo_dir(opts)char *opts;{    static int opt_pass = 1;    int argc;#define MAX_ARGV_LEN 128    static char *vect[MAX_ARGV_LEN+1];    if ( opt_pass == 1 ) {        argc = 0;        while ( argc < MAX_ARGV_LEN+1 ) vect[argc++] = NULL;    }    make_argv(&argc, vect, opts);    return process_opts(argc, vect, opt_pass++);}intget_script(file, script, prefix)FILE *file;char *script;char *prefix;{    char s[MAX_LINE_LEN+1];    char *sopt;    char *cont;    int exec = FALSE;    char tmp_name[L_tmpnam+1];    FILE *TMP_FILE;    char *in;        tmpnam(tmp_name);    if ( (TMP_FILE = fopen(tmp_name, "w+")) == NULL ) {	fprintf(stderr, "scriptload: could not create buffer file%s\n", tmp_name);        return(4);    }    while ( (in = fgets(s, MAX_LINE_LEN, file)) != NULL ) {        if ( !exec && ((sopt = ispbsdir(s, prefix)) != NULL)) {	    while ( (*(cont = in + strlen(in) - 2) == '\\') &&		    (*(cont+1) == '\n') ) { 		/* next line is continuation of this line */		in = cont;		if ((in = fgets(in, MAX_LINE_LEN-(in - s), file)) == NULL) {		    fprintf(stderr, "scriptload: unexpected end-of-file or read error in script\n");		    fclose(TMP_FILE);		    return (6);		}	    }	    if (do_dir(sopt) != 0)		return (-1);        } else {	    if ( fputs(in, TMP_FILE) < 0 ) {	    	fprintf(stderr, "scriptload: error writing to buffer file, %s\n", tmp_name);            	fclose(TMP_FILE);            	return (3);	    }	    /* Stop processing PBS directive lines if we've reach the first               executable line */	    if ( !exec && isexecutable(s) ) {		exec = TRUE;	    }        }    }    fclose(TMP_FILE);    if ( ferror(file) ) {	fprintf(stderr, "scriptload: error reading script file\n");        return(5);    } else {        strcpy(script, tmp_name);    }    return(0);}main(argc, argv)   /* scriptload */int argc;char **argv;{    int errflg;                         /* option error */    static char script[MAXPATHLEN+1] = "";     /* name of script file */    char script_tmp[MAXPATHLEN+1];      /* name of script containing non-PBS */					/* lines */    FILE *f;                            /* FILE pointer to the script */    struct stat statbuf;    errflg = process_opts(argc, argv, 0);  /* get cmd-line options */    if ( errflg || ((optind+1) > argc) ) {        static char usage[]= "usage: scriptload [-C directive_prefix] script\n";        fprintf(stderr, usage);        exit (2);    }    strcpy(script, argv[optind]);    if (stat(script, &statbuf) < 0) {	perror("scriptload: script file:");	exit(1);    }    if ( ! S_ISREG(statbuf.st_mode) ) {	fprintf(stderr, "scriptload: script not a file\n");	exit(1);    }    if ( (f = fopen(script, "r")) != NULL) {	if ( (errflg=get_script(f, script_tmp, set_dir_prefix(dir_prefix, C_opt))) > 0 ) {		unlink(script_tmp);		exit(1);	} else if ( errflg < 0 ) {		exit(1);	}    } else {       perror("scriptload: opening script file:");       exit(8);    }    printf("Buffer_File = %s\n", script_tmp);     exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -