📄 xpbs_scriptload.c
字号:
#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 + -