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

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

?? menus.c

?? internich公司實現的一個非常非常小的OS
?? C
字號:
/* * FILENAME: menus.c * * Copyright  2000-2004 By InterNiche Technologies Inc. All rights reserved * Portions Copyright 1990-1992 by NetPort Software * * * MODULE: NTF * * ROUTINES: atohl(), atoh(), btree_routes(), change_pwd(), do_command(),  * ROUTINES: do_dtrap(), dumpbufs(), dump_bytes(), dumpqueues(), get1ch(),  * ROUTINES: gethost2test(), gethostbynametest(), help(), hex2bin(), * ROUTINES: install_menu(), ishexdigit(), kbdio(), menu_exit(), menu_init(),  * ROUTINES: mini_ping(), mn_add_route(), nsupdatetest(), nummenus(),  * ROUTINES: ping_setdelay(), ping_sethost(), ping_setlength(), setdnssvr(),  * ROUTINES: setlossy(), showmenu(), show_routes(), showver(), stcmp(),  * ROUTINES: stlen(), stooges(), tcpecho(), tk_awaken(), tk_killit(),  * ROUTINES: tk_susp(), udpecho(), hexnibble(),  * * PORTABLE: yes */#include "license.h"#include "ipport.h"#ifdef IN_MENUS#include "menu.h"extern   struct menu_op *  menus[];    /* app's array of ptrs to menu groups */extern   int   nummenus;   /* items in menus[] */extern   char *   prompt;/* the following two routines are DOS-isms menuing requires from the port */extern   int kbhit(void);  /* TRUE if console char (keyboard) is ready */extern   int getch(void);  /* get next console char *//* FUNCTION: do_command() * * do_command() - this is called when we have a complete command  * string in cbuf[]. It looks up the command in the menus and  * executes it. Prints error messages as appropriate.  * *  * PARAM1: void * pio   - device for ns_printf() output * * RETURNS: Returns 0 if the command passed was found in menus *  (or otherwise understood), returns -1 if not.  */intdo_command(void * pio ){   struct menu_op *  mp;   struct menu_op *  mp1   =  NULL;   char *   inbuf =  ((GEN_IO)pio)->inbuf;   int   i;   int   l;   mp1 = NULL;                /* clear menu command pointer */   if (inbuf[0] == '?')    /* is user after help? */   {      help(pio);      ns_printf(pio,"\n");      return 0;   }#ifdef INCLUDE_SHELL   if (inbuf[0] == '!') /* User want an OS shell command? */   {      system(&inbuf[1]);   /* call system */      return 0;   }#endif   /* INCLUDE_SHELL */   /* scan the various menus for the user command: */   for (i = 0; i < nummenus; i++)   /* menu loop */   {      mp = menus[i];    /* get pointer to next menu list */      if (!mp) break;         mp++;          /* bump past menu ID */      while (mp->opt)   /* scan this menu's options for cmd */      {               l = stcmp(mp->opt, inbuf);         if (l == 0 || l > stlen(inbuf))  /* got a match */         {            if(stlen(inbuf) == (int)strlen(mp->opt))    /* was it an exact match? */            {               mp1 = mp;               goto menu_do_cmd;    /* quit searching and go do it */            }            if (mp1) /* we already had a partial match */            {               ns_printf(pio,"Ambiguous command: %s \n", inbuf);               return -1;            }            mp1 = mp;      /* remember the matching entry */         }         mp++;      }   }   if (!mp1)   {      ns_printf(pio,"Unknown command: %s\n", inbuf);      return -1;   }menu_do_cmd:   if ( mp1->func )  /* Has the function been specified ? */      (mp1->func)(pio); /* call the menu command's function */   return 0;   /* we found the command */}/* FUNCTION: stooges() * * Called when an unused menu routine hook is exececuted. This means * a serious programming error occured. * * PARAM1: void * pio   - device for ns_printf() output * * RETURNS: 0 */intstooges(void * pio){   ns_printf(pio,"Hey Moe, it dont woik. NYUK NYUK NYUK NYUK *bop* Owww!\n");   return 0;}/* FUNCTION: showmenu() * * Loop through the passed menu struct, displaying the options * and descriptions. * * PARAM1: void * pio   - device for ns_printf() output * PARAM2: struct menu_op * menu * * RETURNS: void */voidshowmenu(void * pio, struct menu_op * menu)     /* menu to display */   {   ns_printf(pio,"SNMP Station: %s commands:\n", menu->opt);   /* 1st item is menu ID */   menu++;   while (menu->opt)   {      ns_printf(pio,"   %-8s - %s\n", menu->opt, menu->desc);      menu++;   }}/* FUNCTION: help() * * help() - printf the commands and descriptions from the app's  * menus. Returns no meaningfull value, declared an int to suppress  * compiler warnings when assigned to menus.  * *  * PARAM1: void * pio   - device for ns_printf() output * * RETURNS: 0 */inthelp(void * pio){   char *   argp;   int   i,l;   /* help command line should still be in inbuf */   argp = nextarg(((GEN_IO)pio)->inbuf);     /* get first arg after "help" or '?' */   /* handle simple '?' or 'help' cases first */   if (!*argp)   {      showmenu(pio,menus[0]);      ns_printf(pio,"Also try 'help [");      for (i = 0; i < nummenus; i++)   /* menu loop */      {         if (!menus[i]) break;            if (i != 0) ns_printf(pio,"|");  /* separate IDs w/vertical bars */            ns_printf(pio,"%s", menus[i]->opt); /* print each menu ID */      }      ns_printf(pio,"]'\n");      return 0;   }   /* else - should be a parm after help */   for (i = 0; i < nummenus; i++)   /* menu loop */   {      if (!menus[i]) break;         l = stcmp(argp, menus[i]->opt);      if (l == 0 || l > stlen(argp))      /* found a menu matching parm */      {         showmenu(pio,menus[i]);         return 0;      }   }   ns_printf(pio,"unknown help parameter %s\n", argp);   return 0;}/* FUNCTION: kbdio() * * Called by the system whenever a console character is ready. Calls * kbhit() to test, so it can be used for polling. If an enter ASCII * (13 or 10) is received, it calls do_command() with the currently * buffered input characters.  * * This does not block. *  * PARAM1: none * * RETURNS: void */ /* command line buffer. Directly referenced only by kbdio() */char     cbuf[CBUFLEN];     /* re-entry prevention flag for kbdio */static int in_docmd = 0;/* pointer to next available byte in cbuf */char *   nextcb   =  &cbuf[0];/* Generic IO structure that do_command() will be called with */struct GenericIO  std_io   =  {  cbuf, std_out, 0, std_in   }  ;voidkbdio(void){   int   key; 	if(in_docmd)   /* don't poll while doing command */      return;   if(!kbhit())   /* if no key waiting, just return */      return;   key   = getch();        /* get keystroke */   if(key == 13 || key == 10)   {      if(nextcb == cbuf)   /* no data in cbuf */      {         printf("\n%s", prompt);         return;      }      /* else there's data in cbuf */      *nextcb   =  0;    /* null terminate string */      putchar('\n');      in_docmd++; /* set anti-polling flag while doing command */      do_command(&std_io); /* lookup and execute command */      nextcb   =  cbuf;      in_docmd--;      printf(prompt);   }   if(key  >= ' ' && key < 127)  /* got printable char */   {      if(nextcb >= &cbuf[CBUFLEN-1])         return;  /* buffer full */      *nextcb++ = (char)key;      putchar(key);   }   else if(key == 8)    /* backspace */   {      if(nextcb == cbuf)         return;     /* don't backspace if no chars in buf */      *nextcb   =  0; /* clear last char from buffer */      nextcb--;      putchar(8);      putchar(' ');      putchar(8);   }   else if(key == 27)   /* escape */   {      while(nextcb > cbuf) /* reset buffer */      {         nextcb--;         putchar(8);         putchar(' ');         putchar(8);      }      cbuf[0]  =  27;   /* leave ESC in first byte */      cbuf[1]  =  0;    /* clean up string */      /* next char will overwrite ESC */   }   else if(key == 3) /* ctrl-C */   {      /* should we quit() here? */   }   return;}/* FUNCTION: stcmp() * * stcmp() - special string compare routine. returns 0 if strings  * match, else returns char where 1st mismatch occured. ie:  * stcmp("help", "helper") returns a 5. stcmp("help", "nohelp")  * returns a 1. Also: treats space as end of string.  * *  * PARAM1: char * string1 * PARAM2: char * string2 * * RETURNS: 0 if strings match, else returns char where 1st mismatch occured. */intstcmp(char * s1, char * s2){   int   ct =  1;    /* byte being checked */   while(*s1 && *s1 != ' ')  /* read to 1st space or end */   {      if(*s1++ != *s2++) return(ct);         ct++;   }   if(*s2) return(ct);  /* s2 was longer than s1 */      return(0);}/* FUNCTION: stlen() * * stlen() - return length of string passed. space char counts as end  * of string.  * *  * PARAM1: char * string * * RETURNS: return length of string passed */intstlen(char * st1){   int   retval   =  0;   while(*st1 && *st1 != ' ')   /* find first NULL or space */   {      st1++;      retval++;   }   return(retval);}/* FUNCTION: install_menu() * * install_menu() - add new menu to master list.  * *  * PARAM1: struct menu_op * newmenu * * RETURNS: Returns 0 if OK, -1 if no more slots  */intinstall_menu(struct menu_op * newmenu){   int   i;   for(i = 0; i < MAX_MENUS; i++)   {      if(menus[i] == NULL)      {         menus[i] =  newmenu;         return   0; /* Installed OK */      }            }   dtrap();    /* bad programming? */   return   -1;   /* no room in master list */}#endif   /* IN_MENUS */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区av| 欧美午夜宅男影院| 精品免费一区二区三区| 亚洲国产精品99久久久久久久久| 日韩av电影天堂| 欧美另类久久久品| 亚洲综合色噜噜狠狠| 91官网在线观看| 一区二区三区欧美久久| 欧美在线观看视频一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| av中文字幕在线不卡| 中文字幕在线视频一区| 99国产精品国产精品久久| 亚洲人精品一区| 91久久精品网| 亚洲1区2区3区4区| 日韩一区二区三区电影| 天堂在线亚洲视频| 欧美大尺度电影在线| 激情综合五月天| 一区在线观看免费| 99久久综合国产精品| 亚洲精品成人精品456| 欧美日韩中文精品| 日韩成人免费电影| 欧美一区二区成人| 国产精品123| 国产精品视频麻豆| 欧美精品在欧美一区二区少妇| 国产最新精品精品你懂的| 亚洲女女做受ⅹxx高潮| 精品三级av在线| 97se亚洲国产综合自在线不卡| 日韩精品午夜视频| 亚洲欧洲精品一区二区三区| 欧美一区国产二区| 色欧美乱欧美15图片| 韩国精品一区二区| 丝袜美腿亚洲综合| 综合亚洲深深色噜噜狠狠网站| 日韩一区二区三区在线观看| 99久久免费视频.com| 精品一区二区免费视频| 亚洲午夜私人影院| 国产精品婷婷午夜在线观看| 欧美日韩一级黄| 99久久婷婷国产综合精品电影| 极品美女销魂一区二区三区 | 91首页免费视频| 久久se精品一区二区| 亚洲激情自拍偷拍| 日本一区二区三区高清不卡 | 一区二区三区免费| 日本一区二区三区视频视频| 日韩欧美激情在线| 欧美日韩国产首页| 在线免费亚洲电影| 成人av在线资源网站| 韩国理伦片一区二区三区在线播放| 亚洲成国产人片在线观看| 亚洲女厕所小便bbb| 国产精品久久久一本精品 | 久久免费看少妇高潮| 91精品在线一区二区| 欧美偷拍一区二区| 色综合久久久久综合体桃花网| www.欧美日韩国产在线| 粉嫩av亚洲一区二区图片| 国产精品白丝jk白祙喷水网站| 久久国内精品自在自线400部| 五月天婷婷综合| 亚洲制服丝袜av| 亚洲尤物视频在线| 亚洲国产精品一区二区www| 亚洲精品自拍动漫在线| 亚洲日本护士毛茸茸| 最新国产成人在线观看| 国产精品成人一区二区三区夜夜夜| 中文字幕精品一区二区精品绿巨人| 欧美高清在线精品一区| 欧美激情在线一区二区| 国产欧美精品一区| 日韩美女久久久| 伊人婷婷欧美激情| 亚洲 欧美综合在线网络| 丝袜诱惑制服诱惑色一区在线观看 | 日韩一区欧美小说| 亚洲视频1区2区| 亚洲一区在线观看视频| 日本美女一区二区| 精品一区二区三区在线观看国产| 国产麻豆成人精品| av不卡在线观看| 在线观看亚洲精品| 日韩一区二区三区免费看| 精品对白一区国产伦| 国产精品视频麻豆| 亚洲成av人在线观看| 看片网站欧美日韩| 成人国产亚洲欧美成人综合网| 99免费精品视频| 5566中文字幕一区二区电影| 精品国产伦一区二区三区观看体验| 中文一区二区在线观看| 一区二区视频在线看| 日本伊人色综合网| 国产成人免费av在线| 在线观看亚洲专区| 欧美大片拔萝卜| 亚洲特级片在线| 蜜臀va亚洲va欧美va天堂| 高清beeg欧美| 欧美日韩一区久久| 久久久久久久久99精品| 曰韩精品一区二区| 韩国午夜理伦三级不卡影院| jizz一区二区| 欧美一级生活片| 亚洲乱码日产精品bd| 免费黄网站欧美| av色综合久久天堂av综合| 91麻豆精品国产91久久久久久久久| 中文字幕免费不卡| 日本欧洲一区二区| 96av麻豆蜜桃一区二区| 日韩欧美不卡在线观看视频| 亚洲色图另类专区| 久久国内精品自在自线400部| 色婷婷综合久久| 久久久国际精品| 午夜伦欧美伦电影理论片| 国产不卡视频一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 九色综合狠狠综合久久| 欧美在线免费观看视频| 久久久99精品久久| 秋霞午夜av一区二区三区| 91免费看`日韩一区二区| 久久久国产精品麻豆| 日本伊人精品一区二区三区观看方式| 97精品超碰一区二区三区| 久久久精品欧美丰满| 奇米在线7777在线精品 | 91精品综合久久久久久| 亚洲精品乱码久久久久久| 国产乱码字幕精品高清av| 欧美一级黄色大片| 亚洲va天堂va国产va久| 99久免费精品视频在线观看| 久久精品在线免费观看| 另类欧美日韩国产在线| 欧美一级免费观看| 婷婷久久综合九色综合伊人色| 91麻豆6部合集magnet| 亚洲欧美在线视频观看| 成人一道本在线| 欧美国产禁国产网站cc| 国产一区欧美二区| 久久―日本道色综合久久| 日本免费在线视频不卡一不卡二| 欧美丝袜丝交足nylons| 日韩伦理av电影| 91丨九色丨蝌蚪富婆spa| 中文字幕色av一区二区三区| 风间由美一区二区三区在线观看| 精品第一国产综合精品aⅴ| 美脚の诱脚舐め脚责91| 欧美v日韩v国产v| 久久国产精品色| 精品国产乱码久久| 精品亚洲欧美一区| 国产视频一区二区三区在线观看| 国产在线精品不卡| 日本一区二区三区在线不卡| 成人动漫一区二区在线| 亚洲免费av高清| 欧美日韩一级片在线观看| 三级精品在线观看| 精品国产污污免费网站入口| 欧美午夜电影在线播放| 三级久久三级久久久| 欧美一级电影网站| 国产精品一区一区| 日韩理论在线观看| 欧美日韩一区二区欧美激情 | 精品一区二区三区久久久| 久久久久国产精品麻豆| 成人av网在线| 亚洲午夜电影在线| 日韩你懂的在线播放| 成人做爰69片免费看网站| 1024精品合集| 69久久夜色精品国产69蝌蚪网| 久久不见久久见免费视频1| 国产精品久久久一本精品| 欧美亚洲一区三区| 国产伦精品一区二区三区免费 | 精品999在线播放| 成人黄色a**站在线观看|