亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩毛片精品高清免费| 日韩精品一区二区三区中文不卡| 欧美中文字幕不卡| 777奇米成人网| 欧美国产国产综合| 亚洲色图.com| 美腿丝袜在线亚洲一区| 成人精品小蝌蚪| 欧美精品777| 国产人妖乱国产精品人妖| 亚洲欧美偷拍另类a∨色屁股| 日韩和欧美一区二区三区| 国产精品一卡二卡在线观看| 欧美亚洲动漫制服丝袜| 精品国产乱码久久久久久浪潮| 国产精品久久久一区麻豆最新章节| 无码av中文一区二区三区桃花岛| 国产精品综合在线视频| 欧美日韩一级二级| 欧美激情综合网| 午夜精品久久久久久久| 懂色av中文字幕一区二区三区| 欧美日韩一区 二区 三区 久久精品| 久久久777精品电影网影网| 亚洲一线二线三线视频| 大桥未久av一区二区三区中文| 欧美剧情电影在线观看完整版免费励志电影| 久久久国产精品麻豆| 亚洲成av人片在线观看无码| 成人美女在线观看| 精品国产不卡一区二区三区| 亚洲欧美二区三区| 国产成人在线免费| 日韩欧美国产wwwww| 亚洲一区二区欧美日韩| jvid福利写真一区二区三区| 日韩精品一区二区三区蜜臀 | 日韩精品电影一区亚洲| 成人免费高清视频| 久久色在线视频| 免费成人av在线| 欧美在线观看一二区| 亚洲欧美在线视频| 精品一区二区三区在线播放视频| 欧美日本在线视频| 亚洲男人的天堂在线aⅴ视频| 国产91富婆露脸刺激对白| 精品福利一区二区三区免费视频| 亚洲成人在线免费| 91黄视频在线观看| 中文字幕一区二区三中文字幕| 国产精一区二区三区| 日韩精品一区二区三区中文不卡| 视频一区欧美精品| 欧美女孩性生活视频| 一区二区视频在线| 99riav久久精品riav| 国产日韩欧美不卡在线| 久草热8精品视频在线观看| 91麻豆精品国产91久久久更新时间| 一二三四社区欧美黄| 91社区在线播放| 中文字幕一区二区三区四区不卡 | 中文字幕乱码一区二区免费| 精彩视频一区二区三区| 欧美r级在线观看| 蜜桃精品视频在线| 欧美α欧美αv大片| 久久99精品视频| 欧美不卡激情三级在线观看| 九九精品视频在线看| 欧美xxxx老人做受| 国产一区二区不卡在线| 国产午夜精品在线观看| 成人午夜激情片| 中文字幕日韩一区| 91在线码无精品| 亚洲午夜久久久久久久久久久| 欧美午夜精品电影| 亚洲1区2区3区4区| 欧美一级片免费看| 久久99精品一区二区三区三区| 久久久影院官网| 成人av网站在线观看免费| 国产精品久久久久久妇女6080| 99精品视频中文字幕| 亚洲综合免费观看高清完整版在线 | 欧美一卡二卡在线| 老司机午夜精品| 久久久久久久综合色一本| 国产成a人无v码亚洲福利| 国产精品每日更新| 日本久久电影网| 日本美女一区二区| 久久久久综合网| 国产成人精品亚洲午夜麻豆| 国产精品成人网| 欧美无人高清视频在线观看| 青青国产91久久久久久| 久久综合国产精品| 91小宝寻花一区二区三区| 亚洲成人7777| 26uuu精品一区二区在线观看| 成人av在线资源网站| 亚洲午夜久久久久久久久电影网 | 国产精品一区免费视频| 国产精品毛片无遮挡高清| 在线一区二区观看| 日本成人中文字幕| 国产嫩草影院久久久久| 色94色欧美sute亚洲线路二| 奇米精品一区二区三区在线观看 | www.视频一区| 三级不卡在线观看| 国产精品视频九色porn| 欧美群妇大交群中文字幕| 国产一区二区三区高清播放| 亚洲精品视频在线看| 日韩一级在线观看| 99视频国产精品| 日本不卡的三区四区五区| 中文成人综合网| 欧美一级视频精品观看| 91亚洲精品乱码久久久久久蜜桃| 美国三级日本三级久久99| 国产精品麻豆99久久久久久| 91麻豆精品国产| 成人免费黄色在线| 日韩不卡一区二区| 亚洲男人天堂一区| 久久久精品影视| 欧美日韩一级片网站| jvid福利写真一区二区三区| 久久国内精品视频| 亚洲一区二区三区精品在线| 久久久蜜臀国产一区二区| 欧美色爱综合网| 北条麻妃国产九九精品视频| 美日韩一区二区| 亚洲精品ww久久久久久p站| 久久精品亚洲麻豆av一区二区| 欧美三区在线视频| 97久久超碰国产精品| 黄一区二区三区| 天天综合天天做天天综合| 国产精品高潮久久久久无| 26uuu亚洲| 欧美一区二区国产| 精品视频999| 99精品黄色片免费大全| 国产真实乱对白精彩久久| 日韩精品欧美精品| 亚洲小说欧美激情另类| 中文字幕在线观看一区| 久久亚洲欧美国产精品乐播| 91精品久久久久久蜜臀| 色妹子一区二区| 成人午夜av电影| 国产精品99精品久久免费| 精品一区二区在线免费观看| 日韩激情中文字幕| 婷婷国产在线综合| 亚洲国产va精品久久久不卡综合| 最新中文字幕一区二区三区 | 91视频在线观看| 懂色av一区二区三区免费看| 韩国av一区二区三区在线观看| 日韩精品一二三四| 亚洲h动漫在线| 亚洲午夜成aⅴ人片| 亚洲一二三级电影| 一级女性全黄久久生活片免费| 亚洲欧洲性图库| 亚洲欧美综合色| 亚洲人成7777| 亚洲卡通动漫在线| 亚洲美女淫视频| 一区二区免费视频| 亚洲欧美日韩国产中文在线| 亚洲啪啪综合av一区二区三区| 中文字幕在线不卡一区| 综合中文字幕亚洲| 日韩久久一区二区| 亚洲精品亚洲人成人网在线播放| 亚洲色图在线播放| 一区二区三区在线看| 亚洲乱码国产乱码精品精98午夜| 亚洲精品国产一区二区精华液 | 欧美日韩美少妇| 欧美男生操女生| 91精品国产综合久久精品性色 | 黄页网站大全一区二区| 国产一区视频在线看| 国产成人av在线影院| 99视频热这里只有精品免费| 91美女蜜桃在线| 欧美肥妇毛茸茸| 日韩精品一区二区三区在线| 国产日韩欧美麻豆| 日韩久久一区二区|