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

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

?? parser.c

?? linux下獲取一些環境信息的代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
      sizeof(gnu_table_struct), compare_gnu_table_structs  );  if(!found) return "Unknown gnu long option.";  goto *(found->jump);    /* See gcc extension info.  :-)   */  case_Group:    trace("--Group\n");    arg = grab_gnu_arg();    if(!arg) return "List of real groups must follow --Group.";    err=parse_list(arg, parse_gid);    if(err) return err;    selection_list->typecode = SEL_RGID;    return NULL;  case_User:    trace("--User\n");    arg = grab_gnu_arg();    if(!arg) return "List of real users must follow --User.";    err=parse_list(arg, parse_uid);    if(err) return err;    selection_list->typecode = SEL_RUID;    return NULL;  case_cols:  case_width:  case_columns:    trace("--cols\n");    arg = grab_gnu_arg();    if(arg && *arg){      long t;      char *endptr;      t = strtol(arg, &endptr, 0);      if(!*endptr && (t>0) && (t<2000000000)){        screen_cols = (int)t;        return NULL;      }    }    return "Number of columns must follow --cols, --width, or --columns.";  case_cumulative:    trace("--cumulative\n");    if(s[sl]) return "Option --cumulative does not take an argument.";    include_dead_children = 1;    return NULL;  case_deselect:    trace("--deselect\n");    if(s[sl]) return "Option --deselect does not take an argument.";    negate_selection = 1;    return NULL;  case_no_header:  case_no_headers:  case_no_heading:  case_no_headings:  case_noheader:  case_noheaders:  case_noheading:  case_noheadings:    trace("--noheaders\n");    if(s[sl]) return "Option --no-heading does not take an argument.";    if(header_type) return "Only one heading option may be specified.";    header_type = HEAD_NONE;    return NULL;  case_header:  case_headers:  case_heading:  case_headings:    trace("--headers\n");    if(s[sl]) return "Option --heading does not take an argument.";    if(header_type) return "Only one heading option may be specified.";    header_type = HEAD_MULTI;    return NULL;  case_forest:    trace("--forest\n");    if(s[sl]) return "Option --forest does not take an argument.";    forest_type = 'g';    return NULL;  case_format:    trace("--format\n");    arg=grab_gnu_arg();    if(!arg) return "Format specification must follow --format.";    defer_sf_option(arg, SF_G_format);    return NULL;  case_group:    trace("--group\n");    arg = grab_gnu_arg();    if(!arg) return "List of effective groups must follow --group.";    err=parse_list(arg, parse_gid);    if(err) return err;    selection_list->typecode = SEL_EGID;    return NULL;  case_help:    trace("--help\n");    exclusive("--help");    fwrite(help_message,1,strlen(help_message),stdout);    exit(0);    return NULL;  case_info:    trace("--info\n");    exclusive("--info");    self_info();    exit(0);    return NULL;  case_pid:    trace("--pid\n");    arg = grab_gnu_arg();    if(!arg) return "List of process IDs must follow --pid.";    err=parse_list(arg, parse_pid);    if(err) return err;    selection_list->typecode = SEL_PID;    return NULL;  case_ppid:    trace("--ppid\n");    arg = grab_gnu_arg();    if(!arg) return "List of process IDs must follow --ppid.";    err=parse_list(arg, parse_pid);    if(err) return err;    selection_list->typecode = SEL_PPID;    return NULL;  case_rows:  case_lines:    trace("--rows\n");    arg = grab_gnu_arg();    if(arg && *arg){      long t;      char *endptr;      t = strtol(arg, &endptr, 0);      if(!*endptr && (t>0) && (t<2000000000)){        screen_rows = (int)t;        return NULL;      }    }    return "Number of rows must follow --rows or --lines.";  case_sid:    trace("--sid\n");    arg = grab_gnu_arg();    if(!arg) return "Some sid thing(s) must follow --sid.";    err=parse_list(arg, parse_pid);    if(err) return err;    selection_list->typecode = SEL_SESS;    return NULL;  case_sort:    trace("--sort\n");    arg=grab_gnu_arg();    if(!arg) return "Long sort specification must follow --sort.";    defer_sf_option(arg, SF_G_sort);    return NULL;  case_tty:    trace("--tty\n");    arg = grab_gnu_arg();    if(!arg) return "List of ttys must follow --tty.";    err=parse_list(arg, parse_tty);    if(err) return err;    selection_list->typecode = SEL_TTY;    return NULL;  case_user:    trace("--user\n");    arg = grab_gnu_arg();    if(!arg) return "List of effective users must follow --user.";    err=parse_list(arg, parse_uid);    if(err) return err;    selection_list->typecode = SEL_EUID;    return NULL;  case_version:    trace("--version\n");    exclusive("--version");    display_version();    exit(0);    return NULL;  case_context:    trace("--context\n");    format_flags |= FF_Fc;    return NULL;}/*************** process trailing PIDs  **********************/static const char *parse_trailing_pids(void){  selection_node *pidnode;  /* pid */  selection_node *grpnode;  /* process group */  selection_node *sidnode;  /* session */  char **argp;     /* pointer to pointer to text of PID */  const char *err;       /* error code that could or did happen */  int i;  i = ps_argc - thisarg;  /* how many trailing PIDs, SIDs, PGRPs?? */  argp = ps_argv + thisarg;  thisarg = ps_argc - 1;   /* we must be at the end now */  pidnode = malloc(sizeof(selection_node));  pidnode->u = malloc(i*sizeof(sel_union)); /* waste is insignificant */  pidnode->n = 0;  grpnode = malloc(sizeof(selection_node));  grpnode->u = malloc(i*sizeof(sel_union)); /* waste is insignificant */  grpnode->n = 0;  sidnode = malloc(sizeof(selection_node));  sidnode->u = malloc(i*sizeof(sel_union)); /* waste is insignificant */  sidnode->n = 0;  while(i--){    char *data;    data = *(argp++);    switch(*data){    default:   err = parse_pid(  data, pidnode->u + pidnode->n++); break;    case '-':  err = parse_pid(++data, grpnode->u + grpnode->n++); break;    case '+':  err = parse_pid(++data, sidnode->u + sidnode->n++); break;    }    if(err) return err;     /* the node gets freed with the list */  }  if(pidnode->n){    pidnode->next = selection_list;    selection_list = pidnode;    selection_list->typecode = SEL_PID;  }  /* else free both parts */  if(grpnode->n){    grpnode->next = selection_list;    selection_list = grpnode;    selection_list->typecode = SEL_PGRP;  }  /* else free both parts */  if(sidnode->n){    sidnode->next = selection_list;    selection_list = sidnode;    selection_list->typecode = SEL_SESS;  }  /* else free both parts */  return NULL;}/************** misc stuff ***********/static void reset_parser(void){  w_count = 0;}static int arg_type(const char *str){  int tmp = str[0];  if((tmp>='a') && (tmp<='z'))   return ARG_BSD;  if((tmp>='A') && (tmp<='Z'))   return ARG_BSD;  if((tmp>='0') && (tmp<='9'))   return ARG_PID;  if(tmp=='+')                   return ARG_SESS;  if(tmp!='-')                   return ARG_FAIL;  tmp = str[1];  if((tmp>='a') && (tmp<='z'))   return ARG_SYSV;  if((tmp>='A') && (tmp<='Z'))   return ARG_SYSV;  if((tmp>='0') && (tmp<='9'))   return ARG_PGRP;  if(tmp!='-')                   return ARG_FAIL;  tmp = str[2];  if((tmp>='a') && (tmp<='z'))   return ARG_GNU;  if((tmp>='A') && (tmp<='Z'))   return ARG_GNU;  if(tmp=='\0')                  return ARG_END;                                 return ARG_FAIL;}/* First assume sysv, because that is the POSIX and Unix98 standard. */static const char *parse_all_options(void){  const char *err = NULL;  int at;  while(++thisarg < ps_argc){  trace("parse_all_options calling arg_type for \"%s\"\n", ps_argv[thisarg]);    at = arg_type(ps_argv[thisarg]);    trace("ps_argv[thisarg] is %s\n", ps_argv[thisarg]);    if(at != ARG_SYSV) not_pure_unix = 1;    switch(at){    case ARG_GNU:      err = parse_gnu_option();      break;    case ARG_SYSV:      if(!force_bsd){   /* else go past case ARG_BSD */        err = parse_sysv_option();        break;    case ARG_BSD:        if(force_bsd && !(personality & PER_FORCE_BSD)) return "way bad";      }      prefer_bsd_defaults = 1;      err = parse_bsd_option();      break;    case ARG_PGRP:    case ARG_SESS:    case ARG_PID:      prefer_bsd_defaults = 1;      err = parse_trailing_pids();      break;    case ARG_END:    case ARG_FAIL:      trace("              FAIL/END on [%s]\n",ps_argv[thisarg]);      return "Garbage option.";      break;    default:      printf("                  ?    %s\n",ps_argv[thisarg]);      return "Something broke.";    } /* switch */    if(err) return err;  } /* while */  return NULL;}static void choose_dimensions(void){  if(w_count && (screen_cols<132)) screen_cols=132;  if(w_count>1) screen_cols=OUTBUF_SIZE;  /* perhaps --html and --null should set unlimited width */}static const char *thread_option_check(void){  if(!thread_flags){    thread_flags = TF_show_proc;    return NULL;  }  if(forest_type){    return "Thread display conflicts with forest display.";  }  //thread_flags |= TF_no_forest;  if((thread_flags&TF_B_H) && (thread_flags&(TF_B_m|TF_U_m)))    return "Thread flags conflict; can't use H with m or -m.";  if((thread_flags&TF_B_m) && (thread_flags&TF_U_m))    return "Thread flags conflict; can't use both m and -m.";  if((thread_flags&TF_U_L) && (thread_flags&TF_U_T))    return "Thread flags conflict; can't use both -L and -T.";  if(thread_flags&TF_B_H) thread_flags |= (TF_show_proc|TF_loose_tasks);  if(thread_flags&(TF_B_m|TF_U_m)) thread_flags |= (TF_show_proc|TF_show_task|TF_show_both);  if(thread_flags&(TF_U_T|TF_U_L)){    if(thread_flags&(TF_B_m|TF_U_m|TF_B_H)){      // Got a thread style, so format modification is a requirement?      // Maybe -T/-L has H thread style though. (sorting interaction?)      //return "Huh? Tell procps-feedback@lists.sf.net what you expected.";      thread_flags |= TF_must_use;    }else{      // using -L/-T thread style, so format from elsewhere is OK      thread_flags |= TF_show_task;  // or like the H option?      //thread_flags |= TF_no_sort;    }  }  return NULL;}int arg_parse(int argc, char *argv[]){  const char *err = NULL;  const char *err2 = NULL;  ps_argc = argc;  ps_argv = argv;  thisarg = 0;  if(personality & PER_FORCE_BSD) goto try_bsd;  err = parse_all_options();  if(err) goto try_bsd;  err = thread_option_check();  if(err) goto try_bsd;  err = process_sf_options(!not_pure_unix);  if(err) goto try_bsd;  err = select_bits_setup();  if(err) goto try_bsd;  choose_dimensions();  return 0;try_bsd:  trace("--------- now try BSD ------\n");  reset_global();  reset_parser();  reset_sortformat();  format_flags = 0;  ps_argc = argc;  ps_argv = argv;  thisarg = 0;  /* no need to reset flagptr */  not_pure_unix=1;  force_bsd=1;  prefer_bsd_defaults=1;  if(!( (PER_OLD_m|PER_BSD_m) & personality )) /* if default m setting... */    personality |= PER_OLD_m; /* Prefer old Linux over true BSD. */  /* Do not set PER_FORCE_BSD! It is tested below. */  err2 = parse_all_options();  if(err2) goto total_failure;  err2 = thread_option_check();  if(err2) goto total_failure;  err2 = process_sf_options(!not_pure_unix);  if(err2) goto total_failure;  err2 = select_bits_setup();  if(err2) goto total_failure;  // Feel a need to patch this out? First of all, read the FAQ.  // Second of all, talk to me. Without this warning, people can  // get seriously confused. Ask yourself if users would freak out  // about "ps -aux" suddenly changing behavior if a user "x" were  // added to the system.  //  // Also, a "-x" option is coming. It's already there in fact,  // for some non-default personalities. So "ps -ax" will parse  // as SysV options... and you're screwed if you've been patching  // out the friendly warning. Cut-over is likely to be in 2005.  if(!(personality & PER_FORCE_BSD))    fprintf(stderr, "Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html\n");  // Remember: contact albert@users.sf.net or procps-feedback@lists.sf.net  // if you should feel tempted. Be damn sure you understand all  // the issues. The same goes for other stuff too, BTW. Please ask.  // I'm happy to justify various implementation choices.  choose_dimensions();  return 0;total_failure:  reset_parser();  if(personality & PER_FORCE_BSD) fprintf(stderr, "ERROR: %s\n", err2);  else fprintf(stderr, "ERROR: %s\n", err);  fwrite(help_message,1,strlen(help_message),stderr);  exit(1);  /* return 1; */ /* useless */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区小说| 中文av一区二区| 久久精品国产亚洲aⅴ| 久久精品视频在线看| 一本大道综合伊人精品热热| 蜜臀精品一区二区三区在线观看 | 日韩亚洲电影在线| 国产999精品久久| 视频一区二区不卡| 欧美精品一区二区三| 91色porny| 久久99精品国产.久久久久久| 国产精品久久久久四虎| 5566中文字幕一区二区电影| 国产成人亚洲精品狼色在线| 综合网在线视频| 日韩手机在线导航| 色婷婷国产精品| 国产成人精品三级麻豆| 视频一区二区三区入口| 国产精品毛片无遮挡高清| 69堂国产成人免费视频| 91网页版在线| 国产91精品免费| 亚洲精品乱码久久久久久日本蜜臀| 日韩三级精品电影久久久| 色呦呦一区二区三区| 婷婷综合在线观看| 一区二区三区四区在线播放| 国产亚洲va综合人人澡精品| 欧美一区二区三区在线视频| 一本一道波多野结衣一区二区| 国产在线乱码一区二区三区| 午夜精品一区二区三区电影天堂 | 免费欧美高清视频| 一区二区三区免费观看| 国产精品欧美一区喷水| 日韩你懂的在线观看| 91蜜桃网址入口| 国产宾馆实践打屁股91| 精品写真视频在线观看| 蜜桃传媒麻豆第一区在线观看| 亚洲综合激情网| 亚洲国产精品成人综合| 国产女主播视频一区二区| 久久综合狠狠综合久久综合88| 日韩欧美国产综合在线一区二区三区| 日本精品裸体写真集在线观看| 一本色道a无线码一区v| 99国产欧美另类久久久精品| 成人动漫av在线| 欧美日韩国产小视频在线观看| 欧美怡红院视频| 欧美亚洲国产一区在线观看网站 | 国产日韩v精品一区二区| 久久伊99综合婷婷久久伊| 久久久五月婷婷| 亚洲欧洲av在线| 亚洲制服丝袜在线| 日本v片在线高清不卡在线观看| 麻豆精品一区二区| 岛国精品在线播放| 91麻豆国产自产在线观看| 欧美日韩一级视频| 日韩精品一区二区三区在线播放| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日韩高清在线一区| 国内精品伊人久久久久影院对白| 国产91精品一区二区麻豆网站| 91日韩一区二区三区| 欧美精品高清视频| 久久久久久亚洲综合| 亚洲色大成网站www久久九九| 午夜天堂影视香蕉久久| 国产精品白丝av| 在线观看视频一区二区| 日韩欧美专区在线| 国产精品三级电影| 日韩国产精品91| 99久久亚洲一区二区三区青草| 欧美日本高清视频在线观看| 国产无一区二区| 亚洲综合小说图片| 国产一区二区h| 欧美日韩国产高清一区二区 | 欧美人牲a欧美精品| 久久久亚洲欧洲日产国码αv| 亚洲人快播电影网| 国产乱码精品一区二区三区忘忧草| 色综合久久久久网| 久久亚洲一区二区三区明星换脸| 一区二区三区国产精华| 国产精品一区在线观看乱码| 欧美午夜寂寞影院| 亚洲国产精品v| 美腿丝袜亚洲一区| 91福利国产精品| 国产色产综合产在线视频| 午夜电影久久久| 一本久久a久久免费精品不卡| 久久影音资源网| 免费观看在线色综合| 在线观看www91| 国产精品久久久一本精品| 久久99精品国产.久久久久 | 中文欧美字幕免费| 久久精品国产精品亚洲综合| 欧美怡红院视频| 亚洲欧美综合另类在线卡通| 激情综合网最新| 日韩欧美国产综合在线一区二区三区| 一级特黄大欧美久久久| 成人h动漫精品一区二| 久久婷婷一区二区三区| 久久精品国产999大香线蕉| 亚洲精品一区二区三区99| 性欧美疯狂xxxxbbbb| 91免费版pro下载短视频| 国产三级久久久| 中文字幕一区二区三区四区| 香蕉影视欧美成人| 亚洲精品视频在线看| 欧美一级一区二区| 亚洲日本青草视频在线怡红院| 久久久综合九色合综国产精品| 日本亚洲三级在线| 成人综合婷婷国产精品久久| 国产精品网友自拍| 91国产视频在线观看| 丝袜美腿高跟呻吟高潮一区| 精品国产伦一区二区三区免费| 高清国产一区二区| 一区二区三区在线视频免费| 欧美精品777| 国产经典欧美精品| 亚洲老司机在线| 日韩欧美一级片| 99视频一区二区三区| 性做久久久久久久久| 久久久国产综合精品女国产盗摄| 99久久精品久久久久久清纯| 亚洲电影你懂得| 欧美r级在线观看| 一本大道av伊人久久综合| 秋霞国产午夜精品免费视频| 国产精品久久久久精k8| 制服丝袜中文字幕亚洲| 成人黄色一级视频| 日本成人在线不卡视频| 欧美激情一区二区三区四区 | 国产亚洲一区二区三区四区| 91丨porny丨中文| 日本亚洲欧美天堂免费| 亚洲品质自拍视频| 精品国产伦一区二区三区观看体验| aaa亚洲精品| 久久福利视频一区二区| 国产精品第五页| 精品久久久久久久久久久久久久久| 91丨porny丨最新| 激情深爱一区二区| 亚洲国产欧美日韩另类综合 | 久久久99久久精品欧美| 欧美唯美清纯偷拍| 福利一区二区在线| 麻豆中文一区二区| 一区av在线播放| 国产精品久久久久久亚洲伦 | 国产亚洲综合性久久久影院| 在线免费观看日韩欧美| 高清在线不卡av| 久久av老司机精品网站导航| 一个色在线综合| 日本一区二区三区四区在线视频| 制服丝袜亚洲网站| 欧美专区在线观看一区| 成人精品一区二区三区四区| 久久国产精品免费| 日韩国产欧美三级| 一区二区三区视频在线观看| 国产午夜精品一区二区| 精品国内片67194| 4438x成人网最大色成网站| 91尤物视频在线观看| 国产伦精品一区二区三区在线观看| 三级在线观看一区二区| 另类小说视频一区二区| 日日夜夜精品免费视频| 亚洲人午夜精品天堂一二香蕉| 中文字幕欧美日韩一区| 久久婷婷色综合| 26uuuu精品一区二区| 精品少妇一区二区三区免费观看 | 性久久久久久久久久久久| 亚洲精品伦理在线| 亚洲激情图片一区| 成人欧美一区二区三区黑人麻豆 | 91麻豆精品国产91久久久久久 | 欧美日韩高清一区二区不卡| 91啪亚洲精品|