int check_path() { int i; int first_par; int odd_node = 0; vet_st *pv; first_par = find_par(begin); for (i = 1; i <= n_vetex; i++) { pv = &vetexs[i]; if (pv->valid && first_par != find_par(i)) { return 1; } } for (i = 1; i <= n_vetex; i++) { pv = &vetexs[i]; if (pv->valid && deg[i]%2 == 1) { begin = i; odd_node++; } } if (odd_node == 0 || odd_node == 2) { return 1; } else { return 0; } }
void setsets(int u, int v) { int s1,s2, tmp; if (u == v) return ; s1 = find_par(u); s2 = find_par(v); tmp = sets[s1] + sets[s2]; if (sets[s1] > sets[s2]) { sets[s1] = s2; sets[s2] = tmp; } else { sets[s2] = s1; sets[s1] = tmp; } }
int par_exist(char *block, char *name) { Block *bp; Par *pp; if (!now_open) ath_error("par_exist: No open parameter file\n"); if (block == NULL) ath_error("par_exist: no block name specified\n"); if (name == NULL) ath_error("par_exist: no par name specified\n"); bp = find_block(block); if (bp == NULL) return 0; pp = find_par(bp,name); return (pp == NULL ? 0 : 1); }
static char *par_getsl(char *block, char *name) { Block *bp; Par *pp; if (!now_open) ath_error("par_gets: No open parameter file\n"); if (block == NULL) ath_error("par_gets: no block name specified\n"); if (name == NULL) ath_error("par_gets: no par name specified\n"); bp = find_block(block); if (bp == NULL) ath_error("par_gets: Block \"%s\" not found\n",block); pp = find_par(bp,name); if (pp == NULL) ath_error("par_gets: Par \"%s\" not found in Block \"%s\"\n",name,block); return pp->value; }
void par_cmdline(int argc, char *argv[]) { int i; char *sp, *ep; char *block, *name, *value; Block *bp; Par *pp; int len; if (debug) printf("PAR_CMDLINE: \n"); for (i=1; i<argc; i++) { block = argv[i]; sp = strchr(block,'/'); if ((sp = strchr(block,'/')) == NULL) continue; *sp = '\0'; name = sp + 1; if((ep = strchr(name,'=')) == NULL){ *sp = '/'; /* Repair argv[i] */ continue; } *ep = '\0'; value = ep + 1; if (debug) printf("PAR_CMDLINE: %s/%s=%s\n",block,name,value); bp = find_block(block); if (bp == NULL) ath_error("par_cmdline: Block \"%s\" not found\n",block); pp = find_par(bp,name); if (pp == NULL) ath_error("par_cmdline: Par \"%s\" not found\n",name); free(pp->value); pp->value = my_strdup(value); len = (int)strlen(value); /* Update the maximum Par value length */ bp->max_value_len = len > bp->max_value_len ? len : bp->max_value_len; /* Repair argv[i] */ *sp = '/'; *ep = '='; } }