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

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

?? tkgen.c

?? MAKEFILE 經典編寫方法
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* Generate tk script based upon config.in * * Version 1.0 * Eric Youngdale * 10/95 * * 1996 01 04 * Avery Pennarun - Aesthetic improvements. * * 1996 01 24 * Avery Pennarun - Bugfixes and more aesthetics. * * 1996 03 08 * Avery Pennarun - The int and hex config.in commands work right. *                - Choice buttons are more user-friendly. *                - Disabling a text entry line greys it out properly. *                - dep_tristate now works like in Configure. (not pretty) *                - No warnings in gcc -Wall. (Fixed some "interesting" bugs.) *                - Faster/prettier "Help" lookups. * * 1996 03 15 * Avery Pennarun - Added new sed script from Axel Boldt to make help even *                  faster. (Actually awk is downright slow on some machines.) *                - Fixed a bug I introduced into Choice dependencies.  Thanks *                  to Robert Krawitz for pointing this out. * * 1996 03 16 * Avery Pennarun - basic "do_make" support added to let sound config work. * * 1996 03 25 *     Axel Boldt - Help now works on "choice" buttons. * * 1996 04 06 * Avery Pennarun - Improved sound config stuff. (I think it actually works *                  now!) *                - Window-resize-limits don't use ugly /usr/lib/tk4.0 hack. *                - int/hex work with tk3 again. (The "cget" error.) *                - Next/Prev buttons switch between menus.  I can't take *                  much credit for this; the code was already there, but *                  ifdef'd out for some reason.  It flickers a lot, but *                  I suspect there's no "easy" fix for that. *                - Labels no longer highlight as you move the mouse over *                  them (although you can still press them... oh well.) *                - Got rid of the last of the literal color settings, to *                  help out people with mono X-Windows systems.  *                  (Apparently there still are some out there!) *                - Tabstops seem sensible now. * * 1996 04 14 * Avery Pennarun - Reduced flicker when creating windows, even with "update *                  idletasks" hack. * * 1997 12 08 * Michael Chastain - Remove sound driver special cases. * * 1997 11 15 * Michael Chastain - For choice buttons, write values for all options, *                    not just the single chosen one.  This is compatible *                    with 'make config' and 'make oldconfig', and is *                    needed so smart-config dependencies work if the *                    user switches from one configuration method to *                    another. * * 1998 03 09 * Axel Boldt - Smaller layout of main menu - it's still too big for 800x600. *            - Display help in text window to allow for cut and paste. *            - Allow for empty lines in help texts. *            - update_define should not set all variables unconditionally to *              0: they may have been set to 1 elsewhere. CONFIG_NETLINK is *              an example. * * 1999 01 04 * Michael Elizabeth Chastain <mec@shout.net> * - Call clear_globalflags when writing out update_mainmenu. *   This fixes the missing global/vfix lines for ARCH=alpha on 2.2.0-pre4. * * 8 January 1999, Michael Elizabeth Chastain <mec@shout.net> * - Emit menus_per_column * * 14 January 1999, Michael Elizabeth Chastain <mec@shout.net> * - Steam-clean this file.  I tested this by generating kconfig.tk for every *   architecture and comparing it character-for-character against the output *   of the old tkparse. * - Fix flattening of nested menus.  The old code simply assigned items to *   the most recent token_mainmenu_option, without paying attention to scope. *   For example: "menu-1 bool-a menu-2 bool-b endmenu bool-c bool-d endmenu". *   The old code would put bool-a in menu-1, bool-b in menu-2, and bool-c *   and bool-d in *menu-2*.  This hosed the nested submenus in *   drives/net/Config.in and other places. * - Fix menu line wraparound at 128 menus (some fool used a 'char' for *   a counter). * * 23 January 1999, Michael Elizabeth Chastain <mec@shout.net> * - Remove bug-compatible code. * * 07 July 1999, Andrzej M. Krzysztofowicz <ankry@mif.pg.gda.pl> * Some bugfixes, including * - disabling "m" options when CONFIG_MODULES is set to "n" as well as "y" *   option in dep_tristate when dependency is set to "m", * - deactivating choices which should not be available, * - basic validation for int and hex introduced if the entered one is not  *   valid, * - updates of all opened menus instead of the active only. I was afraid *   that it would slow down updates, but I don't even see any speed difference *   on my machine. If it slows you can still work with only a single menu *   opened, * - fixed error when focussing non-existent window (especially Help windows), * Higher level submenus implemented. */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include "tkparse.h"/* * Total number of menus. */static int tot_menu_num = 0;/* * Pointers to mainmenu_option and endmenu of each menu. */struct kconfig * menu_first [100];struct kconfig * menu_last  [100];/* * Generate portion of wish script for the beginning of a submenu. * The guts get filled in with the various options. */static void start_proc( char * label, int menu_num, int toplevel ){    if ( toplevel )	printf( "menu_option menu%d %d \"%s\"\n", menu_num, menu_num, label );    printf( "proc menu%d {w title} {\n", menu_num );    printf( "\tset oldFocus [focus]\n" );    if ( menu_first[menu_num]->menu_number != 0 )	printf( "\tcatch {focus .menu%d}\n",		menu_first[menu_num]->menu_number );    printf( "\tcatch {destroy $w; unregister_active %d}\n", menu_num );    printf( "\ttoplevel $w -class Dialog\n" );    printf( "\twm withdraw $w\n" );    printf( "\tglobal active_menus\n" );    printf( "\tset active_menus [lsort -integer [linsert $active_menus end %d]]\n", menu_num );    printf( "\tmessage $w.m -width 400 -aspect 300 -text \\\n" );    printf( "\t\t\"%s\"  -relief raised\n", label );    printf( "\tpack $w.m -pady 10 -side top -padx 10\n" );    printf( "\twm title $w \"%s\" \n\n", label );    printf( "\tbind $w <Escape> \"catch {focus $oldFocus}; destroy $w; unregister_active %d; break\"\n", menu_num);    printf("\tset nextscript ");    printf("\"catch {focus $oldFocus}; " );    /*      * We are checking which windows should be destroyed and which are      * common parrents with the next one. Remember that menu_num field     * in mainmenu_option record reports number of its *parent* menu.     */    if ( menu_num < tot_menu_num    && menu_first[menu_num + 1]->menu_number != menu_num )    {	int to_destr;	printf( "destroy $w; unregister_active %d; ", menu_num );	to_destr = menu_first[menu_num]->menu_number;	while ( to_destr > 0 && menu_first[menu_num + 1]->menu_number != to_destr )	{	    printf( "catch {destroy .menu%d}; unregister_active %d; ",		to_destr, to_destr );	    to_destr = menu_first[to_destr]->menu_number;	}    }    printf( "menu%d .menu%d \\\"$title\\\"\"\n",	menu_num+1, menu_num+1 );    /*     * Attach the "Prev", "Next" and "OK" buttons at the end of the window.     */    printf( "\tframe $w.f\n" );    if ( toplevel )	printf( "\tbutton $w.f.back -text \"Main Menu\" \\\n" );    else	printf( "\tbutton $w.f.back -text \"OK\" \\\n" );    printf( "\t\t-width 15 -command \"catch {focus $oldFocus}; destroy $w; unregister_active %d\"\n",	menu_num );    printf( "\tbutton $w.f.next -text \"Next\" -underline 0\\\n" );    printf( "\t\t-width 15 -command $nextscript\n");    if ( menu_num == tot_menu_num ) {      printf( "\t$w.f.next configure -state disabled\n" );        /*          *  this is a bit hackish but Alt-n must be rebound         *  otherwise if the user press Alt-n on the last menu         *  it will give him/her the next menu of one of the          *  previous options         */        printf( "\tbind all <Alt-n> \"puts \\\"no more menus\\\" \"\n");    }    else    {        /*         * I should be binding to $w not all - but if I do nehat I get the error "unknown path"         */        printf( "\tbind all <Alt-n> $nextscript\n");    }    printf( "\tbutton $w.f.prev -text \"Prev\" -underline 0\\\n" );    printf( "\t\t-width 15 -command \"catch {focus $oldFocus}; destroy $w; unregister_active %d; menu%d .menu%d \\\"$title\\\"\"\n",	menu_num, menu_num-1, menu_num-1 );    if ( menu_num == 1 ) {	printf( "\t$w.f.prev configure -state disabled\n" );    }    else    {        printf( "\tbind $w <Alt-p> \"catch {focus $oldFocus}; destroy $w; unregister_active %d; menu%d .menu%d \\\"$title\\\";break\"\n",            menu_num, menu_num-1, menu_num-1 );    }      printf( "\tpack $w.f.back $w.f.next $w.f.prev -side left -expand on\n" );    printf( "\tpack $w.f -pady 10 -side bottom -anchor w -fill x\n" );    /*     * Lines between canvas and other areas of the window.     */    printf( "\tframe $w.topline -relief ridge -borderwidth 2 -height 2\n" );    printf( "\tpack $w.topline -side top -fill x\n\n" );    printf( "\tframe $w.botline -relief ridge -borderwidth 2 -height 2\n" );    printf( "\tpack $w.botline -side bottom -fill x\n\n" );    /*     * The "config" frame contains the canvas and a scrollbar.     */    printf( "\tframe $w.config\n" );    printf( "\tpack $w.config -fill y -expand on\n\n" );    printf( "\tscrollbar $w.config.vscroll -command \"$w.config.canvas yview\"\n" );    printf( "\tpack $w.config.vscroll -side right -fill y\n\n" );    /*     * The scrollable canvas itself, where the real work (and mess) gets done.     */    printf( "\tcanvas $w.config.canvas -height 1\\\n" );    printf( "\t\t-relief flat -borderwidth 0 -yscrollcommand \"$w.config.vscroll set\" \\\n" );    printf( "\t\t-width [expr [winfo screenwidth .] * 1 / 2] \n" );    printf( "\tframe $w.config.f\n" );    printf( "\tbind $w <Key-Down> \"$w.config.canvas yview scroll  1 unit;break;\"\n");    printf( "\tbind $w <Key-Up> \"$w.config.canvas yview scroll  -1 unit;break;\"\n");    printf( "\tbind $w <Key-Next> \"$w.config.canvas yview scroll  1 page;break;\"\n");    printf( "\tbind $w <Key-Prior> \"$w.config.canvas yview scroll  -1 page;break;\"\n");    printf( "\tbind $w <Key-Home> \"$w.config.canvas yview moveto 0;break;\"\n");    printf( "\tbind $w <Key-End> \"$w.config.canvas yview moveto 1 ;break;\"\n");    printf( "\tpack $w.config.canvas -side right -fill y\n" );    printf("\n\n");}/* * Each proc we create needs a global declaration for any global variables we * use.  To minimize the size of the file, we set a flag each time we output * a global declaration so we know whether we need to insert one for a * given function or not. */static void clear_globalflags(void){    int i;    for ( i = 1; i <= max_varnum; i++ )	vartable[i].global_written = 0;}/* * Output a "global" line for a given variable.  Also include the * call to "vfix".  (If vfix is not needed, then it's fine to just printf * a "global" line). */void global( const char *var ){    printf( "\tglobal %s\n", var );}/* * This function walks the chain of conditions that we got from cond.c * and creates a TCL conditional to enable/disable a given widget. */void generate_if( struct kconfig * cfg, struct condition * ocond,    int menu_num, int line_num ){    struct condition * cond;    struct dependency * tmp;    struct kconfig * cfg1;    if ( line_num >= -1 )    {	if ( cfg->token == token_define_bool || cfg->token == token_define_hex	||   cfg->token == token_define_int || cfg->token == token_define_string	||   cfg->token == token_define_tristate || cfg->token == token_unset )	    return;	if ( cfg->token == token_comment && line_num == -1 )	    return;    }    else    {	if ( cfg->token == token_string || cfg->token == token_mainmenu_option )	    return;    }    /*     * First write any global declarations we need for this conditional.     */    for ( cond = ocond; cond != NULL; cond = cond->next )    {	switch ( cond->op )	{	default:	    break;	case op_variable:	    if ( ! vartable[cond->nameindex].global_written )	    {		vartable[cond->nameindex].global_written = 1;		global( vartable[cond->nameindex].name );	    }	    break;	}    }    /*     * Now write this option.     */    if ( cfg->nameindex > 0 && ! vartable[cfg->nameindex].global_written )    {	vartable[cfg->nameindex].global_written = 1;	global( vartable[cfg->nameindex].name );    }    /*     * Generate the body of the conditional.     */    printf( "\tif {" );    for ( cond = ocond; cond != NULL; cond = cond->next )    {	switch ( cond->op )	{	default:	    break;	case op_bang:   printf( " ! "  ); break;	case op_eq:     printf( " == " ); break;	case op_neq:    printf( " != " ); break;	case op_and:    printf( " && " ); break;	case op_and1:   printf( " && " ); break;	case op_or:     printf( " || " ); break;	case op_lparen: printf( "("    ); break;	case op_rparen: printf( ")"    ); break;	case op_variable:	    printf( "$%s", vartable[cond->nameindex].name );	    break;	case op_constant:	    if      ( strcmp( cond->str, "y" ) == 0 ) printf( "1" );	    else if ( strcmp( cond->str, "n" ) == 0 ) printf( "0" );	    else if ( strcmp( cond->str, "m" ) == 0 ) printf( "2" );	    else if ( strcmp( cond->str, "" ) == 0 )  printf( "4" );	    else		printf( "\"%s\"", cond->str );	    break;	}    }    printf( "} then {" );    /*     * Generate a procedure call to write the value.     * This code depends on procedures in header.tk.     */    if ( line_num >= -1 )    {	int modtoyes = 0;	switch ( cfg->token )	{	default:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费版在线| 成人午夜电影小说| 4438x亚洲最大成人网| 亚洲成人777| 日韩欧美资源站| 国产美女娇喘av呻吟久久| 久久九九国产精品| 色综合久久久久网| 天天av天天翘天天综合网 | 国产欧美日产一区| av电影在线观看一区| 亚洲女同ⅹxx女同tv| 欧美午夜视频网站| 国产一区视频在线看| 欧美国产在线观看| 91视视频在线直接观看在线看网页在线看| 亚洲欧美aⅴ...| 欧美精品高清视频| 国产精品18久久久久久久网站| 亚洲欧洲www| 日韩精品一区二区三区在线观看| 国产精品一区二区在线看| 亚洲欧洲日本在线| 欧美一区三区二区| 国产不卡视频在线播放| 夜夜夜精品看看| 精品国产青草久久久久福利| 菠萝蜜视频在线观看一区| 亚洲国产欧美另类丝袜| 国产亚洲欧美日韩日本| 欧美三级电影在线看| 国产露脸91国语对白| 亚洲成av人片在线| 中文字幕成人网| 欧美一级理论性理论a| 成人精品gif动图一区| 欧美a一区二区| 亚洲精品综合在线| 久久久蜜臀国产一区二区| 欧洲视频一区二区| 国产成人在线观看| 日本欧美一区二区在线观看| 国产精品久久久久四虎| 亚洲精品一区二区三区精华液| 欧美专区亚洲专区| 99视频一区二区| 国产综合久久久久影院| 午夜精品免费在线| 亚洲女爱视频在线| 国产日韩av一区| 精品美女在线观看| 欧美精品久久久久久久久老牛影院| www.亚洲精品| 国产真实乱对白精彩久久| 五月天婷婷综合| 一区二区三区国产| 综合色中文字幕| 国产欧美一区视频| 欧美sm极限捆绑bd| 91精品国产综合久久婷婷香蕉| 色综合天天天天做夜夜夜夜做| 成人福利视频在线看| 国产成人午夜精品5599| 九九精品一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 视频一区二区欧美| 亚洲不卡一区二区三区| 夜夜精品视频一区二区| 亚洲免费观看在线观看| 成人免费在线播放视频| 国产精品日韩成人| 国产精品久久久久久久久免费相片| 久久久久久久综合| 久久久不卡影院| 久久久精品免费网站| 久久久久国色av免费看影院| 精品欧美黑人一区二区三区| 精品播放一区二区| wwww国产精品欧美| 精品1区2区在线观看| 久久亚洲精华国产精华液| 精品国产伦理网| 国产午夜亚洲精品羞羞网站| 国产欧美日本一区视频| 国产精品三级av在线播放| 亚洲人妖av一区二区| 亚洲老司机在线| 亚洲自拍偷拍av| 婷婷久久综合九色综合绿巨人| 五月开心婷婷久久| 久久se这里有精品| 国产成人精品网址| 色一区在线观看| 欧美精品xxxxbbbb| 精品毛片乱码1区2区3区| 久久免费视频色| 中文字幕亚洲精品在线观看| 亚洲一区二区三区自拍| 舔着乳尖日韩一区| 激情久久五月天| 成人免费av在线| 欧美在线观看18| 精品三级在线看| 亚洲欧洲一区二区在线播放| 亚洲色图在线视频| 日韩福利电影在线| 国产乱码一区二区三区| 91麻豆精品一区二区三区| 欧美人妖巨大在线| 国产亚洲短视频| 亚洲一区二区3| 国产一区二区视频在线| 色婷婷av一区二区三区大白胸| 日韩欧美一二区| 国产精品天干天干在观线| 亚洲高清一区二区三区| 国产麻豆欧美日韩一区| 欧美视频在线一区二区三区| 精品美女一区二区三区| 一级做a爱片久久| 韩国欧美一区二区| 欧美自拍偷拍午夜视频| 久久久久久久久岛国免费| 亚洲一卡二卡三卡四卡五卡| 国产一区二区久久| 欧美日韩国产a| 中文字幕中文字幕中文字幕亚洲无线| 丝袜亚洲另类欧美| 91性感美女视频| 久久一区二区三区国产精品| 亚洲va中文字幕| 成人国产免费视频| 精品成人佐山爱一区二区| 亚洲444eee在线观看| 99久久婷婷国产精品综合| 日韩精品一区二区在线| 亚洲一区二区三区自拍| 波多野结衣中文字幕一区| 亚洲精品一区二区在线观看| 五月婷婷久久丁香| 一本一道久久a久久精品| 国产亚洲1区2区3区| 久久99精品久久久| 欧美日韩中文另类| 亚洲精品美腿丝袜| 99视频一区二区| 亚洲国产经典视频| 国产麻豆精品95视频| 欧美xxxxx裸体时装秀| 日日夜夜一区二区| 欧美日韩国产a| 亚洲一二三区在线观看| 色婷婷亚洲一区二区三区| 日本一区二区视频在线| 国产寡妇亲子伦一区二区| 久久综合久久综合久久综合| 美女精品自拍一二三四| 日韩欧美国产电影| 免费在线观看日韩欧美| 欧美一区二区成人| 日本视频中文字幕一区二区三区| 欧美色网一区二区| 亚洲电影一级黄| 欧美日韩精品欧美日韩精品一综合| 亚洲欧美韩国综合色| 色综合激情五月| 亚洲国产你懂的| 欧美日本精品一区二区三区| 丝袜诱惑亚洲看片| 日韩一区二区免费在线观看| 蜜臀国产一区二区三区在线播放 | 欧美精品一区男女天堂| 麻豆免费精品视频| 精品久久国产97色综合| 精品中文av资源站在线观看| 久久影院午夜论| 不卡视频在线看| 亚洲综合视频网| 欧美老肥妇做.爰bbww| 奇米精品一区二区三区四区| 欧美大片国产精品| 国产一区二区成人久久免费影院| 国产日韩欧美a| 91蝌蚪porny成人天涯| 亚洲图片有声小说| 88在线观看91蜜桃国自产| 美国av一区二区| 欧美极品另类videosde| 91亚洲男人天堂| 视频一区二区中文字幕| 久久久久久久久久看片| 91丝袜国产在线播放| 手机精品视频在线观看| 久久综合色鬼综合色| 一本大道久久a久久综合| 三级不卡在线观看| 久久久精品tv| 在线亚洲免费视频| 免费成人美女在线观看| 国产精品情趣视频|