亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sortformat.c

?? linux下獲取一些環境信息的代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
      if(!ss) return "Unknown sort specifier.";      snode = do_one_sort_spec(ss->spec);      if(!snode) return "Unknown sort specifier.";      snode->reverse = direction;      endp = snode; while(endp->next) endp = endp->next;  /* find end */      endp->next = sfn->s_cooked;      sfn->s_cooked = snode;      direction = 0;      break;    }    walk++;  }}/******************* high-level below here *********************//* * Used to parse option O lists. Option O is shared between * sorting and formatting. Users may expect one or the other. * The "broken" flag enables a really bad Unix98 misfeature. * Recursion is to preserve original order. */static const char *parse_O_option(sf_node *sfn){  const char *err;     /* error code that could or did happen */  if(sfn->next){    err = parse_O_option(sfn->next);    if(err) return err;  }  switch(sfn->sf_code){    case SF_B_o: case SF_G_format: case SF_U_o: /*** format ***/      err = format_parse(sfn);      if(!err) already_parsed_format = 1;      break;    case SF_U_O:                                /*** format ***/      /* Can have -l -f f u... set already_parsed_format like DEC does */      if(already_parsed_format) return "option -O can not follow other format options.";      err = format_parse(sfn);      if(err) return err;      already_parsed_format = 1;      O_wrap(sfn,'u'); /* must wrap user format in default */      break;    case SF_B_O:                                /***  both  ***/      if(have_gnu_sort || already_parsed_sort) err = "Multiple sort options.";      else err = verify_short_sort(sfn->sf);      if(!err){ /* success as sorting code */        short_sort_parse(sfn);        already_parsed_sort = 1;        return NULL;      }      if(already_parsed_format){        err = "option O is neither first format nor sort order.";        break;      }      if(!format_parse(sfn)){ /* if success as format code */        already_parsed_format = 1;        O_wrap(sfn,'b'); /* must wrap user format in default */        return NULL;      }      break;    case SF_G_sort: case SF_B_m:                 /***  sort  ***/      if(already_parsed_sort) err = "Multiple sort options.";      else err = long_sort_parse(sfn);      already_parsed_sort = 1;      break;    default:                                    /***  junk  ***/      return "Bug: parse_O_option got weirdness!";  }  return err; /* could be NULL */}/************ Main parser calls this to save lists for later **********//* store data for later and return 1 if arg looks non-standard */int defer_sf_option(const char *arg, int source){  sf_node *sfn;  char buf[16];  int dist;  const format_struct *fs;  int need_item = 1;  sfn = malloc(sizeof(sf_node));  sfn->sf = malloc(strlen(arg)+1);  strcpy(sfn->sf, arg);  sfn->sf_code = source;  sfn->s_cooked = NULL;  sfn->f_cooked = NULL;  sfn->next = sf_list;  sf_list = sfn;  if(source == SF_G_sort) have_gnu_sort = 1;  /* Now try to find an excuse to ignore broken Unix98 parsing. */  if(source != SF_U_o) return 1;    /* Wonderful! Already non-Unix98. */  do{    switch(*arg){    case ' ': case ',': case '\0':  /* no \t\n\r support in Unix98 */      if(need_item) return 1;       /* something wrong */      need_item=1;      break;    case '=':      if(need_item) return 1;       /* something wrong */      return 0;                     /* broken Unix98 parsing is required */    default:      if(!need_item) break;      need_item=0;      dist = strcspn(arg,", =");      if(dist>15) return 1;         /* something wrong, sort maybe? */      strncpy(buf,arg,dist);   /* no '\0' on end */      buf[dist] = '\0';        /* fix that problem */      fs = search_format_array(buf);      if(!fs) return 1;             /* invalid spec, macro or sort maybe? */      if(fs->vendor) return 1;      /* Wonderful! Legal non-Unix98 spec. */    }  } while (*++arg);  return 0;                         /* boring, Unix98 is no change */}/***** Since ps is not long-lived, the memory leak can be ignored. ******/void reset_sortformat(void){  sf_list = NULL;          /* deferred sorting and formatting */  format_list = NULL;      /* digested formatting options */  sort_list = NULL;        /* digested sorting options (redundant?) */  have_gnu_sort = 0;  already_parsed_sort = 0;  already_parsed_format = 0;}/***** Search format_list for findme, then insert putme after findme. ****/static int fmt_add_after(const char *findme, format_node *putme){  format_node *walk;  if(!strcmp(format_list->name, findme)){    putme->next = format_list->next;    format_list->next = putme;    return 1; /* success */  }  walk = format_list;  while(walk->next){    if(!strcmp(walk->next->name, findme)){      putme->next = walk->next->next;      walk->next->next = putme;      return 1; /* success */    }    walk = walk->next;  }  return 0; /* fail */}/******* Search format_list for findme, then delete it. ********/static int fmt_delete(const char *findme){  format_node *walk;  format_node *old;  if(!strcmp(format_list->name, findme)){    old = format_list;    format_list = format_list->next;    free(old);    return 1; /* success */  }  walk = format_list;  while(walk->next){    if(!strcmp(walk->next->name, findme)){      old = walk->next;      walk->next = walk->next->next;      free(old);      return 1; /* success */    }    walk = walk->next;  }  return 0; /* fail */}/************ Build a SysV format backwards. ***********/#define PUSH(foo) (fn=do_one_spec(foo, NULL), fn->next=format_list, format_list=fn)static const char *generate_sysv_list(void){  format_node *fn;  if((format_modifiers & FM_y) && !(format_flags & FF_Ul))    return "Modifier -y without format -l makes no sense.";  if(prefer_bsd_defaults){    if(format_flags) PUSH("cmd");    else PUSH("args");    PUSH("bsdtime");    if(!(format_flags & FF_Ul)) PUSH("stat");  }else{    if(format_flags & FF_Uf) PUSH("cmd");    else PUSH("ucmd");    PUSH("time");  }  PUSH("tname");  /* Unix98 says "TTY" here, yet "tty" produces "TT". */  if(format_flags & FF_Uf) PUSH("stime");  /* avoid duplicate columns from -FP and -Fly */  if(format_modifiers & FM_F){    /* if -FP take the Sun-style column instead (sorry about "sgi_p") */    if(!(format_modifiers & FM_P)) PUSH("psr");  /* should be ENG */    /* if -Fly take the ADDR-replacement RSS instead */    if(!( (format_flags & FF_Ul) && (format_modifiers & FM_y) )) PUSH("rss");  }  if(format_flags & FF_Ul){    PUSH("wchan");  }  /* since FM_y adds RSS anyway, don't do this hack when that is true */  if( (format_flags & FF_Ul) && !(format_modifiers & FM_y) ){    if(personality & PER_IRIX_l){ /* add "rss" then ':' here */      PUSH("sgi_rss");      fn = malloc(sizeof(format_node));      fn->width = 1;      fn->name = malloc(2);      strcpy(fn->name, ":");      fn->pr = NULL;     /* checked for */      fn->need = 0;      fn->vendor = AIX;   /* yes, for SGI weirdness */      fn->flags = CF_PRINT_EVERY_TIME;      fn->next = format_list;      format_list=fn;    }  }  if((format_modifiers & FM_F) || (format_flags & FF_Ul)){    PUSH("sz");  }  if(format_flags & FF_Ul){    if(format_modifiers & FM_y) PUSH("rss");    else if(personality & (PER_ZAP_ADDR|PER_IRIX_l)) PUSH("sgi_p");    else PUSH("addr_1");  }  if(format_modifiers & FM_c){    PUSH("pri"); PUSH("class");  }else if(format_flags & FF_Ul){    PUSH("ni");    if(personality & PER_IRIX_l) PUSH("priority");    else /* is this good? */ PUSH("opri");  }  // FIXME TODO XXX -- this is a serious problem  // These somehow got flipped around.  // The bug is in procps-3.1.1, procps-990211, prior too?  if((thread_flags & TF_U_L) && (format_flags & FF_Uf)) PUSH("nlwp");  if( (format_flags & (FF_Uf|FF_Ul)) && !(format_modifiers & FM_c) ) PUSH("c");  if(format_modifiers & FM_P) PUSH("psr");  if(thread_flags & TF_U_L) PUSH("lwp");  if(format_modifiers & FM_j){    PUSH("sid");    PUSH("pgid");  }  if(format_flags & (FF_Uf|FF_Ul)) PUSH("ppid");  if(thread_flags & TF_U_T) PUSH("spid");  PUSH("pid");  if(format_flags & FF_Uf){    if(personality & PER_SANE_USER) PUSH("user");    else PUSH("uid_hack");  }else if(format_flags & FF_Ul){    PUSH("uid");  }  if(format_flags & FF_Ul){    PUSH("s");    if(!(format_modifiers & FM_y)) PUSH("f");  }  if(format_modifiers & FM_M){    PUSH("label");  /* Mandatory Access Control */  }  return NULL;}/************************************************************************** * Used to parse option O lists. Option O is shared between * sorting and formatting. Users may expect one or the other. * The "broken" flag enables a really bad Unix98 misfeature. */const char *process_sf_options(int localbroken){  sf_node *sf_walk;  if(personality & PER_BROKEN_o) localbroken = 1;  if(personality & PER_GOOD_o)   localbroken = 0;  broken = localbroken;  if(sf_list){    const char *err;    err = parse_O_option(sf_list);    if(err) return err;  }  if(format_list) printf("Bug: must reset the list first!\n");  /* merge formatting info of sf_list into format_list here */  sf_walk = sf_list;  while(sf_walk){    format_node *fmt_walk;    fmt_walk = sf_walk->f_cooked;    sf_walk->f_cooked = NULL;    while(fmt_walk){   /* put any nodes onto format_list in opposite way */      format_node *travler;      travler = fmt_walk;      fmt_walk = fmt_walk->next;      travler->next = format_list;      format_list = travler;    }    sf_walk = sf_walk->next;  }  /* merge sorting info of sf_list into sort_list here */  sf_walk = sf_list;  while(sf_walk){    sort_node *srt_walk;    srt_walk = sf_walk->s_cooked;    sf_walk->s_cooked = NULL;    while(srt_walk){   /* put any nodes onto sort_list in opposite way */      sort_node *travler;      travler = srt_walk;      srt_walk = srt_walk->next;      travler->next = sort_list;      sort_list = travler;    }    sf_walk = sf_walk->next;  }  // Get somebody to explain how -L/-T is supposed to interact  // with sorting. Do the threads remain grouped, with sorting  // by process, or do the threads get sorted by themselves?  if(sort_list && (thread_flags&TF_no_sort)){    return "Tell procps-feedback@lists.sf.net what you expected.";  }  // If nothing else, try to use $PS_FORMAT before the default.  if(!format_flags && !format_modifiers && !format_list){    char *tmp;    tmp = getenv("PS_FORMAT");  /* user override kills default */    if(tmp && *tmp){      const char *err;      sf_node sfn;      if(thread_flags&TF_must_use) return "Tell procps-feedback@sf.net what you want. (-L/-T, -m/m/H, and $PS_FORMAT)";      sfn.sf = tmp;      sfn.f_cooked = NULL;      err = format_parse(&sfn);      if(!err){        format_node *fmt_walk;        fmt_walk = sfn.f_cooked;        while(fmt_walk){   /* put any nodes onto format_list in opposite way */          format_node *travler;          travler = fmt_walk;          fmt_walk = fmt_walk->next;          travler->next = format_list;          format_list = travler;        }        return NULL;      }      // FIXME: prove that this won't be hit on valid bogus-BSD options      fprintf(stderr, "Warning: $PS_FORMAT ignored. (%s)\n", err);    }  }  if(format_list){    if(format_flags) return "Conflicting format options.";    if(format_modifiers) return "Can't use output modifiers with user-defined output";    if(thread_flags&TF_must_use) return "-L/-T with H/m/-m and -o/-O/o/O is nonsense";    return NULL;  }  do{    const char *spec;    switch(format_flags){    default:             return "Conflicting format options.";    /* These can be NULL, which enables SysV list generation code. */    case 0:              spec=NULL;           break;    case FF_Uf | FF_Ul:  spec=sysv_fl_format; break;    case FF_Uf:          spec=sysv_f_format;  break;    case FF_Ul:          spec=sysv_l_format;  break;    /* These are NOT REACHED for normal -j processing. */    case FF_Uj:          spec=sysv_j_format;  break; /* Debian & Digital */    case FF_Uj | FF_Ul:  spec="RD_lj";        break; /* Debian */    case FF_Uj | FF_Uf:  spec="RD_fj";        break; /* Debian */    /* These are true BSD options. */    case FF_Bj:          spec=bsd_j_format;   break;    case FF_Bl:          spec=bsd_l_format;   break;    case FF_Bs:          spec=bsd_s_format;   break;    case FF_Bu:          spec=bsd_u_format;   break;    case FF_Bv:          spec=bsd_v_format;   break;    /* These are old Linux options. Option m is overloaded. */    case FF_LX:          spec="OL_X";         break;    case FF_Lm:          spec="OL_m";         break;    /* This is the sole FLASK security option. */    case FF_Fc:          spec="FLASK_context"; break;    }  /* end switch(format_flags) */    // not just for case 0, since sysv_l_format and such may be NULL    if(!spec) return generate_sysv_list();    do{      format_node *fmt_walk;      fmt_walk = do_one_spec(spec, NULL); /* use override "" for no headers */      while(fmt_walk){   /* put any nodes onto format_list in opposite way */        format_node *travler;        travler = fmt_walk;        fmt_walk = fmt_walk->next;        travler->next = format_list;        format_list = travler;      }    }while(0);  }while(0);  do{    format_node *fn;    if(format_modifiers & FM_j){      fn = do_one_spec("pgid", NULL);      if(!fmt_add_after("PPID", fn)) if(!fmt_add_after("PID", fn))        return "Internal error, no PID or PPID for -j option.";      fn = do_one_spec("sid", NULL);      if(!fmt_add_after("PGID", fn)) return "Lost my PGID!";    }    if(format_modifiers & FM_y){      /* TODO: check for failure to do something, and complain if so */      fmt_delete("F");      fn = do_one_spec("rss", NULL);      if(fmt_add_after("ADDR", fn)) fmt_delete("ADDR");    }    if(format_modifiers & FM_c){      fmt_delete("%CPU"); fmt_delete("CPU"); fmt_delete("CP"); fmt_delete("C");      fmt_delete("NI");      fn = do_one_spec("class", NULL);      if(!fmt_add_after("PRI", fn))        return "Internal error, no PRI for -c option.";      fmt_delete("PRI"); /* we want a different one */      fn = do_one_spec("pri", NULL);      if(!fmt_add_after("CLS", fn)) return "Lost my CLS!";    }    if(thread_flags & TF_U_T){      fn = do_one_spec("spid", NULL);      if(!fmt_add_after("PID", fn) && (thread_flags&TF_must_use))        return "-T with H/-m/m but no PID for SPID to follow";    }    if(thread_flags & TF_U_L){      fn = do_one_spec("lwp", NULL);      if(fmt_add_after("SID",  fn)) goto did_lwp;      if(fmt_add_after("SESS", fn)) goto did_lwp;      if(fmt_add_after("PGID", fn)) goto did_lwp;      if(fmt_add_after("PGRP", fn)) goto did_lwp;      if(fmt_add_after("PPID", fn)) goto did_lwp;      if(fmt_add_after("PID",  fn)) goto did_lwp;      if(thread_flags&TF_must_use)        return "-L with H/-m/m but no PID/PGID/SID/SESS for NLWP to follow";did_lwp:      fn = do_one_spec("nlwp", NULL);      fmt_add_after("%CPU",  fn);    }    if(format_modifiers & FM_M){    // Mandatory Access Control, IRIX style      fn = do_one_spec("label", NULL);      fn->next=format_list;      format_list=fn;    }    /* Do personality-specific translations not covered by format_flags.     * Generally, these only get hit when personality overrides unix output.     * That (mostly?) means the Digital and Debian personalities.     */    if((personality & PER_ZAP_ADDR) && (format_flags & FF_Ul)){      fn = do_one_spec("sgi_p", NULL);      if(fmt_add_after("ADDR", fn)) fmt_delete("ADDR");    }    if((personality & PER_SANE_USER) && (format_flags & FF_Uf)){      fn = do_one_spec("user", NULL);      if(fmt_add_after("UID", fn)) fmt_delete("UID");    }  }while(0);  return NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
夜夜精品浪潮av一区二区三区| 日日夜夜免费精品视频| 欧美日韩国产综合久久| 国产综合久久久久久久久久久久| 亚洲欧美一区二区三区国产精品| 日韩写真欧美这视频| 91麻豆福利精品推荐| 国产一区在线观看麻豆| 五月激情综合网| 亚洲视频你懂的| 欧美国产成人精品| 欧美电影免费观看高清完整版在线观看| 成人高清免费观看| 国产一区二区三区免费观看| 亚洲444eee在线观看| 亚洲欧美国产三级| 中文无字幕一区二区三区| 日韩欧美卡一卡二| 欧美人狂配大交3d怪物一区| 色婷婷久久一区二区三区麻豆| 国产成人亚洲综合a∨婷婷图片| 亚洲成人在线观看视频| 亚洲欧美福利一区二区| 国产精品免费免费| 国产欧美日韩麻豆91| 精品国产制服丝袜高跟| 7777精品伊人久久久大香线蕉经典版下载| 91色|porny| 99久久久免费精品国产一区二区| 国产精品综合一区二区| 久久av中文字幕片| 免费美女久久99| 亚洲va欧美va人人爽午夜| 亚洲国产成人91porn| 洋洋av久久久久久久一区| 亚洲丝袜美腿综合| 日韩美女精品在线| 亚洲精品久久久蜜桃| 亚洲精选视频免费看| 一区二区三区在线视频免费| 亚洲女爱视频在线| 亚洲一区二区三区国产| 亚洲影视在线观看| 午夜精品久久久久影视| 天堂在线亚洲视频| 美女一区二区三区在线观看| 久久国产精品99久久人人澡| 国产一区视频网站| 成人av电影免费在线播放| 不卡高清视频专区| 欧美性猛交xxxxxxxx| 欧美日韩免费电影| 欧美一区二区在线看| 亚洲精品一区二区三区99| 欧美国产视频在线| 亚洲精品大片www| 日韩电影在线免费看| 狂野欧美性猛交blacked| 国产精品自拍在线| 91视频观看视频| 91精品国产91久久久久久最新毛片| 日韩一区二区免费在线观看| 亚洲精品一区二区三区影院| 国产精品久久久久婷婷 | 亚洲欧洲精品一区二区三区| 国产精品女上位| 亚洲最大色网站| 奇米影视一区二区三区小说| 经典一区二区三区| 99国产精品一区| 在线成人免费观看| 久久精品视频免费| 一区二区三区蜜桃| 美女视频免费一区| 99久久久久久99| 日韩一级免费观看| 国产视频一区在线播放| 亚洲亚洲人成综合网络| 久久不见久久见免费视频1| proumb性欧美在线观看| 91精品国产综合久久久久久漫画 | 国内久久精品视频| 99久久久久久| 日韩欧美一二三四区| 中文字幕电影一区| 日韩影院在线观看| 成人av网站在线观看免费| 欧美日韩国产一级| 国产精品欧美一级免费| 日本在线不卡视频| 色综合色狠狠综合色| 日韩精品一区二区三区swag| 亚洲欧美国产三级| 国产精品1区二区.| 91.成人天堂一区| 亚洲视频在线一区二区| 精品在线一区二区三区| 欧美日韩亚洲丝袜制服| 国产精品视频一二三| 蜜桃视频免费观看一区| 欧美亚洲另类激情小说| 中文在线一区二区| 午夜精品久久一牛影视| 99久久精品情趣| 精品久久久久一区二区国产| 夜色激情一区二区| 99在线热播精品免费| 久久久久国色av免费看影院| 日韩在线一区二区| 欧美亚洲自拍偷拍| 亚洲色图视频网| 成人免费视频播放| 欧美精品一区二区三区很污很色的 | 亚洲一卡二卡三卡四卡| 国产精品综合一区二区三区| 欧美一区二区三区在线电影| 一区二区三区欧美激情| 97se亚洲国产综合在线| 国产精品妹子av| 国产a久久麻豆| 国产亚洲精品久| 国产在线播放一区| 精品欧美一区二区久久| 毛片不卡一区二区| 69堂国产成人免费视频| 天天色综合成人网| 欧美日韩一区二区在线观看| 亚洲一二三四在线| 在线一区二区三区做爰视频网站| 成人欧美一区二区三区1314| fc2成人免费人成在线观看播放| 国产拍欧美日韩视频二区| 国产精品一区二区你懂的| 久久精品一区二区三区av| 国产精品77777竹菊影视小说| 久久久久九九视频| 国产成人在线影院| 国产精品成人一区二区三区夜夜夜| 国产suv一区二区三区88区| 国产精品丝袜久久久久久app| av在线不卡观看免费观看| 成人欧美一区二区三区视频网页| 91小视频在线观看| 亚洲欧美日韩系列| 欧美日韩一区 二区 三区 久久精品| 亚洲综合免费观看高清完整版在线 | 欧美变态口味重另类| 国产一区二区视频在线播放| 久久久久国色av免费看影院| 国产成人综合在线| 亚洲欧洲韩国日本视频| 91视频观看免费| 亚洲制服丝袜在线| 91精品国产欧美一区二区成人 | 国产视频在线观看一区二区三区| 高清不卡在线观看av| |精品福利一区二区三区| 色久综合一二码| 日韩黄色在线观看| 久久精品一区蜜桃臀影院| www.性欧美| 亚洲3atv精品一区二区三区| 日韩精品一区二区在线| 高清不卡一区二区| 洋洋av久久久久久久一区| 日韩欧美国产精品一区| 成人精品一区二区三区四区| 亚洲午夜电影网| 久久影视一区二区| 一本大道av一区二区在线播放| 日韩精品一级中文字幕精品视频免费观看 | 欧美精品aⅴ在线视频| 久久精品国产亚洲a| 国产精品久久三| 欧美精品日日鲁夜夜添| 国产激情精品久久久第一区二区| 日韩一区在线看| 日韩一区二区免费高清| 国产盗摄女厕一区二区三区| 亚洲免费在线电影| 精品国产3级a| 欧美主播一区二区三区| 国产真实精品久久二三区| 亚洲老妇xxxxxx| 久久久噜噜噜久久人人看 | 亚洲人成精品久久久久久| 欧美一区二区三区免费观看视频| 成人av先锋影音| 激情五月激情综合网| 亚洲视频一区在线| 26uuu精品一区二区三区四区在线| 欧美影院一区二区| 风间由美一区二区三区在线观看 | 国产一区二区三区免费观看| 亚洲视频中文字幕| 国产日韩欧美不卡在线| 7777精品伊人久久久大香线蕉| 91在线你懂得| 国产精品99久久久久| 青娱乐精品视频|