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

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

?? cardfile.c

?? ncurses-5.4 需要的就來下把 一定會有用的哦
?? C
字號:
/**************************************************************************** * Copyright (c) 1999-2002,2003 Free Software Foundation, Inc.              * *                                                                          * * Permission is hereby granted, free of charge, to any person obtaining a  * * copy of this software and associated documentation files (the            * * "Software"), to deal in the Software without restriction, including      * * without limitation the rights to use, copy, modify, merge, publish,      * * distribute, distribute with modifications, sublicense, and/or sell       * * copies of the Software, and to permit persons to whom the Software is    * * furnished to do so, subject to the following conditions:                 * *                                                                          * * The above copyright notice and this permission notice shall be included  * * in all copies or substantial portions of the Software.                   * *                                                                          * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  * * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               * * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   * * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   * * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    * * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    * * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               * *                                                                          * * Except as contained in this notice, the name(s) of the above copyright   * * holders shall not be used in advertising or otherwise to promote the     * * sale, use or other dealings in this Software without prior written       * * authorization.                                                           * ****************************************************************************//* * Author: Thomas E. Dickey <dickey@clark.net> 1999 * * $Id: cardfile.c,v 1.23 2003/04/26 16:43:56 tom Exp $ * * File format: text beginning in column 1 is a title; other text is content. */#include <test.priv.h>#if USE_LIBFORM && USE_LIBPANEL#include <form.h>#include <panel.h>#define VISIBLE_CARDS 10#define OFFSET_CARD 2enum {    MY_CTRL_x = MAX_FORM_COMMAND    ,MY_CTRL_N    ,MY_CTRL_P    ,MY_CTRL_Q    ,MY_CTRL_W};typedef struct _card {    struct _card *link;    PANEL *panel;    FORM *form;    char *title;    char *content;} CARD;static CARD *all_cards;static char default_name[] = "cardfile.dat";#if !HAVE_STRDUP#define strdup my_strdupstatic char *strdup(char *s){    char *p = (char *) malloc(strlen(s) + 1);    if (p)	strcpy(p, s);    return (p);}#endif /* not HAVE_STRDUP */static const char *skip(const char *buffer){    while (isspace(UChar(*buffer)))	buffer++;    return buffer;}static voidtrim(char *buffer){    unsigned n = strlen(buffer);    while (n-- && isspace(UChar(buffer[n])))	buffer[n] = 0;}/*******************************************************************************/static CARD *add_title(const char *title){    CARD *card, *p, *q;    for (p = all_cards, q = 0; p != 0; q = p, p = p->link) {	int cmp = strcmp(p->title, title);	if (cmp == 0)	    return p;	if (cmp > 0)	    break;    }    card = (CARD *) calloc(1, sizeof(CARD));    card->title = strdup(title);    card->content = strdup("");    if (q == 0) {	card->link = all_cards;	all_cards = card;    } else {	card->link = q->link;	q->link = card;    }    return card;}static voidadd_content(CARD * card, const char *content){    unsigned total, offset;    content = skip(content);    if ((total = strlen(content)) != 0) {	if ((offset = strlen(card->content)) != 0) {	    total += 1 + offset;	    card->content = (char *) realloc(card->content, total + 1);	    strcpy(card->content + offset++, " ");	} else {	    if (card->content != 0)		free(card->content);	    card->content = (char *) malloc(total + 1);	}	strcpy(card->content + offset, content);    }}static CARD *new_card(void){    CARD *card = add_title("");    add_content(card, "");    return card;}static CARD *find_card(char *title){    CARD *card;    for (card = all_cards; card != 0; card = card->link)	if (!strcmp(card->title, title))	    break;    return card;}static voidread_data(char *fname){    FILE *fp;    CARD *card = 0;    char buffer[BUFSIZ];    if ((fp = fopen(fname, "r")) != 0) {	while (fgets(buffer, sizeof(buffer), fp)) {	    trim(buffer);	    if (isspace(UChar(*buffer))) {		if (card == 0)		    card = add_title("");		add_content(card, buffer);	    } else if ((card = find_card(buffer)) == 0) {		card = add_title(buffer);	    }	}	fclose(fp);    }}/*******************************************************************************/static voidwrite_data(const char *fname){    FILE *fp;    CARD *p = 0;    int n;    if (!strcmp(fname, default_name))	fname = "cardfile.out";    if ((fp = fopen(fname, "w")) != 0) {	for (p = all_cards; p != 0; p = p->link) {	    FIELD **f = form_fields(p->form);	    for (n = 0; f[n] != 0; n++) {		char *s = field_buffer(f[n], 0);		if (s != 0		    && (s = strdup(s)) != 0) {		    trim(s);		    fprintf(fp, "%s%s\n", n ? "\t" : "", s);		    free(s);		}	    }	}	fclose(fp);    }}/*******************************************************************************//* * Count the cards */static intcount_cards(void){    CARD *p;    int count = 0;    for (p = all_cards; p != 0; p = p->link)	count++;    return count;}/* * Shuffle the panels to keep them in a natural hierarchy. */static voidorder_cards(CARD * first, int depth){    if (first) {	if (depth && first->link)	    order_cards(first->link, depth - 1);	top_panel(first->panel);    }}/* * Return the next card in the list */static CARD *next_card(CARD * now){    if (now->link)	now = now->link;    return now;}/* * Return the previous card in the list */static CARD *prev_card(CARD * now){    CARD *p;    for (p = all_cards; p != 0; p = p->link)	if (p->link == now)	    return p;    return now;}/*******************************************************************************/static intform_virtualize(WINDOW *w){    int c = wgetch(w);    switch (c) {    case CTRL('W'):	return (MY_CTRL_W);    case CTRL('N'):	return (MY_CTRL_N);    case CTRL('P'):	return (MY_CTRL_P);    case CTRL('Q'):    case 033:	return (MY_CTRL_Q);    case KEY_BACKSPACE:	return (REQ_DEL_PREV);    case KEY_DC:	return (REQ_DEL_CHAR);    case KEY_LEFT:	return (REQ_LEFT_CHAR);    case KEY_RIGHT:	return (REQ_RIGHT_CHAR);    case KEY_DOWN:    case KEY_NEXT:	return (REQ_NEXT_FIELD);    case KEY_UP:    case KEY_PREVIOUS:	return (REQ_PREV_FIELD);    default:	return (c);    }}static FIELD **make_fields(CARD * p, int form_high, int form_wide){    FIELD **f = (FIELD **) calloc(3, sizeof(FIELD *));    f[0] = new_field(1, form_wide, 0, 0, 0, 0);    set_field_back(f[0], A_REVERSE);    set_field_buffer(f[0], 0, p->title);    field_opts_off(f[0], O_BLANK);    f[1] = new_field(form_high - 1, form_wide, 1, 0, 0, 0);    set_field_buffer(f[1], 0, p->content);    set_field_just(f[1], JUSTIFY_LEFT);    field_opts_off(f[1], O_BLANK);    f[2] = 0;    return f;}static voidshow_legend(void){    erase();    move(LINES - 3, 0);    addstr("^Q/ESC -- exit form            ^W   -- writes data to file\n");    addstr("^N   -- go to next card        ^P   -- go to previous card\n");    addstr("Arrow keys move left/right within a field, up/down between fields");}#if (defined(KEY_RESIZE) && HAVE_WRESIZE) || NO_LEAKSstatic voidfree_form_fields(FIELD ** f){    int n;    for (n = 0; f[n] != 0; ++n) {	free_field(f[n]);    }    free(f);}#endif/*******************************************************************************/static voidcardfile(char *fname){    WINDOW *win;    CARD *p;    CARD *top_card;    int visible_cards = count_cards();    int panel_wide = COLS - (visible_cards * OFFSET_CARD);    int panel_high = LINES - (visible_cards * OFFSET_CARD) - 5;    int form_wide = panel_wide - 2;    int form_high = panel_high - 2;    int y = (visible_cards - 1) * OFFSET_CARD;    int x = 0;    int ch = ERR;    int last_ch;    int finished = FALSE;    show_legend();    /* make a panel for each CARD */    for (p = all_cards; p != 0; p = p->link) {	win = newwin(panel_high, panel_wide, y, x);	keypad(win, TRUE);	p->panel = new_panel(win);	box(win, 0, 0);	p->form = new_form(make_fields(p, form_high, form_wide));	set_form_win(p->form, win);	set_form_sub(p->form, derwin(win, form_high, form_wide, 1, 1));	post_form(p->form);	y -= OFFSET_CARD;	x += OFFSET_CARD;    }    order_cards(top_card = all_cards, visible_cards);    while (!finished) {	update_panels();	doupdate();	last_ch = ch;	ch = form_virtualize(panel_window(top_card->panel));	switch (form_driver(top_card->form, ch)) {	case E_OK:	    break;	case E_UNKNOWN_COMMAND:	    switch (ch) {	    case MY_CTRL_Q:		finished = TRUE;		break;	    case MY_CTRL_P:		top_card = prev_card(top_card);		order_cards(top_card, visible_cards);		break;	    case MY_CTRL_N:		top_card = next_card(top_card);		order_cards(top_card, visible_cards);		break;	    case MY_CTRL_W:		form_driver(top_card->form, REQ_VALIDATION);		write_data(fname);		break;#if defined(KEY_RESIZE) && HAVE_WRESIZE	    case KEY_RESIZE:		/* resizeterm already did "something" reasonable, but it cannot		 * know much about layout.  So let's make it nicer.		 */		panel_wide = COLS - (visible_cards * OFFSET_CARD);		panel_high = LINES - (visible_cards * OFFSET_CARD) - 5;		form_wide = panel_wide - 2;		form_high = panel_high - 2;		y = (visible_cards - 1) * OFFSET_CARD;		x = 0;		show_legend();		for (p = all_cards; p != 0; p = p->link) {		    FIELD **oldf = form_fields(p->form);		    WINDOW *olds = form_sub(p->form);		    win = form_win(p->form);		    /* move and resize the card as needed		     * FIXME: if the windows are shrunk too much, this won't do		     */		    mvwin(win, y, x);		    wresize(win, panel_high, panel_wide);		    /* reconstruct each form.  Forms are not resizable, and		     * there appears to be no good way to reload the text in		     * a resized window.		     */		    werase(win);		    unpost_form(p->form);		    free_form(p->form);		    p->form = new_form(make_fields(p, form_high, form_wide));		    set_form_win(p->form, win);		    set_form_sub(p->form, derwin(win, form_high, form_wide,						 1, 1));		    post_form(p->form);		    free_form_fields(oldf);		    delwin(olds);		    box(win, 0, 0);		    y -= OFFSET_CARD;		    x += OFFSET_CARD;		}		break;#endif	    default:		beep();		break;	    }	    break;	default:	    flash();	    break;	}    }#if NO_LEAKS    while (all_cards != 0) {	FIELD **f;	int count;	p = all_cards;	all_cards = all_cards->link;	f = form_fields(p->form);	count = field_count(p->form);	unpost_form(p->form);	/* ...so we can free it */	free_form(p->form);	/* this also disconnects the fields */	free_form_fields(f);	del_panel(p->panel);	free(p->title);	free(p->content);	free(p);    }#endif}/*******************************************************************************/intmain(int argc, char *argv[]){    int n;    setlocale(LC_ALL, "");    initscr();    cbreak();    noecho();    if (argc > 1) {	for (n = 1; n < argc; n++)	    read_data(argv[n]);	if (count_cards() == 0)	    new_card();	cardfile(argv[1]);    } else {	read_data(default_name);	if (count_cards() == 0)	    new_card();	cardfile(default_name);    }    endwin();    ExitProgram(EXIT_SUCCESS);}#elseintmain(void){    printf("This program requires the curses form and panel libraries\n");    ExitProgram(EXIT_FAILURE);}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品―色哟哟| 久久蜜桃香蕉精品一区二区三区| 免费成人美女在线观看.| 国产人久久人人人人爽| 欧美精品色综合| av不卡一区二区三区| 久久精品久久99精品久久| 亚洲你懂的在线视频| 精品国产乱码久久久久久免费| 91视频在线观看免费| 国产一区二区看久久| 日精品一区二区三区| 亚洲理论在线观看| 国产精品视频在线看| 久久这里都是精品| 欧美大度的电影原声| 69av一区二区三区| 色94色欧美sute亚洲线路二| 高清不卡在线观看| 国产精品自在在线| 国内精品嫩模私拍在线| 蜜桃视频免费观看一区| 日本午夜精品一区二区三区电影 | 日韩欧美一区二区视频| 在线精品视频免费观看| 91在线免费视频观看| 东方aⅴ免费观看久久av| 国产一区视频在线看| 看片的网站亚洲| 美女国产一区二区三区| 蜜臀精品一区二区三区在线观看| 午夜成人免费电影| 日韩精品亚洲一区二区三区免费| 午夜精品福利一区二区蜜股av| 亚洲精品视频在线观看免费| 亚洲精品免费视频| 亚洲国产wwwccc36天堂| 亚洲成a人在线观看| 亚洲大型综合色站| 日本中文在线一区| 久久国产精品无码网站| 国产一区二区三区四| 国产美女主播视频一区| 国产高清成人在线| 成人av电影免费在线播放| 99re这里都是精品| 欧美日韩精品三区| 69堂精品视频| 久久先锋资源网| 国产精品人人做人人爽人人添| 亚洲欧洲av在线| 亚洲欧美一区二区三区孕妇| 久久久午夜电影| 色综合久久久久久久久久久| 91最新地址在线播放| 欧美亚洲丝袜传媒另类| 日韩亚洲欧美综合| 久久精品人人爽人人爽| 最新成人av在线| 亚洲综合一二区| 麻豆91精品91久久久的内涵| 国产激情91久久精品导航| av一本久道久久综合久久鬼色| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品一区专区| 午夜精品福利视频网站| 亚洲精品国产a| 天天影视涩香欲综合网| 精品一区二区国语对白| 成人91在线观看| 欧美嫩在线观看| 久久综合狠狠综合久久激情 | 日韩欧美中文字幕精品| 欧美激情一区在线| 亚洲最快最全在线视频| 久久精品国产一区二区| 99精品欧美一区二区蜜桃免费 | 亚洲国产精品精华液2区45| 一区二区三区波多野结衣在线观看 | 色综合久久天天综合网| 制服丝袜亚洲精品中文字幕| 欧美激情一区二区三区四区| 亚洲成av人片| 国产成人精品免费| 欧美精品日韩一本| 久久先锋影音av| 亚洲色图欧美偷拍| 日韩激情中文字幕| 国产福利不卡视频| 欧美日本一区二区三区四区| 久久久三级国产网站| 亚洲专区一二三| 成人免费视频一区| 日韩一卡二卡三卡| 亚洲最大成人综合| 国产精品996| 日韩欧美一区二区免费| 一区二区三区在线视频观看| 国产美女精品一区二区三区| 欧美日韩免费视频| 最新久久zyz资源站| 精品午夜久久福利影院| 欧美在线高清视频| 亚洲三级在线免费| 国产成人免费视频网站高清观看视频| 欧美剧在线免费观看网站| 中文字幕日韩欧美一区二区三区| 精品一区二区国语对白| 欧美一级国产精品| 久久久久国产一区二区三区四区| 亚洲自拍偷拍九九九| 不卡的av网站| 国产日韩欧美高清在线| 亚洲国产一区二区三区青草影视| 欧美色成人综合| 亚洲欧美另类小说| 91啪亚洲精品| 国产色91在线| 国产精品一区二区久久不卡| 在线播放亚洲一区| 亚洲二区在线视频| 在线观看国产91| 亚洲人成影院在线观看| 99riav一区二区三区| 中文字幕在线不卡一区二区三区| 国产激情一区二区三区| 欧美精品一区在线观看| 麻豆成人91精品二区三区| 欧美一级艳片视频免费观看| 图片区小说区区亚洲影院| 欧美三级日本三级少妇99| 午夜久久久久久久久久一区二区| 欧美主播一区二区三区美女| 玉米视频成人免费看| 在线免费视频一区二区| 亚洲第一主播视频| 欧美精品99久久久**| 五月婷婷激情综合网| 3d动漫精品啪啪| 蜜桃视频在线观看一区| 精品国产一区二区三区av性色 | 中文字幕视频一区| 欧美日韩一区三区| 久久久久国产精品麻豆| 国产精品一二三| 久久久777精品电影网影网| 国产精品一区在线观看你懂的| 精品成人私密视频| 成人小视频免费在线观看| 亚洲天堂a在线| 欧美在线观看视频一区二区三区 | 国产欧美综合色| av中文字幕在线不卡| 亚洲色图视频网| 欧美日韩一区二区三区在线| 日本不卡123| 337p日本欧洲亚洲大胆色噜噜| 国产成人精品一区二区三区四区 | 免费高清视频精品| 久久久久久亚洲综合| 99久久夜色精品国产网站| 亚洲第一激情av| 精品成人在线观看| 91小视频免费看| 日本va欧美va精品发布| 国产亚洲欧美色| 91国模大尺度私拍在线视频| 免费成人在线视频观看| 国产精品黄色在线观看| 欧美日韩国产一区二区三区地区| 国产成a人亚洲精品| 天堂久久久久va久久久久| 福利一区二区在线| 一区二区三区在线免费视频| 日韩精品中文字幕一区二区三区| 一区二区三区在线看| 日韩欧美在线网站| 91在线一区二区三区| 日本免费新一区视频| 日韩理论电影院| 日韩一区二区三区在线观看| caoporen国产精品视频| 美女国产一区二区三区| 亚洲另类春色国产| 国产亚洲精品aa午夜观看| 在线视频一区二区免费| 国产成人免费视| 免费一区二区视频| 亚洲精品大片www| 国产视频一区二区在线| 欧美日韩国产欧美日美国产精品| 国产乱对白刺激视频不卡| 一区二区三区视频在线看| 久久综合网色—综合色88| 欧美日本在线看| 91亚洲男人天堂| 国产suv精品一区二区883| 日本强好片久久久久久aaa| 伊人性伊人情综合网| 国产三级一区二区三区|