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

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

?? slist.c

?? Novell Slist 源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
	char	tempName[SERVER_NAME_SIZE],		/* Used for copying server name				*/
			tempAddr[26];		/* Used for copying server address			*/

	/*
		I'm a simple man with simple tastes, so a bubble sort will do
	*/
	for ( i = 0 ; i < numServers-1 ; i++ )
		for ( j = 0 ; j < numServers-1 ; j++ )
			if (strcmp(serverList[j].name, serverList[j+1].name) > 0)
			{
				/*
					Switch the server names
				*/
				strcpy(tempName, 			 serverList[j].name		);
				strcpy(serverList[j].name,	 serverList[j+1].name	);
				strcpy(serverList[j+1].name, tempName				);

				/*
					Switch the server addresses
				*/
				strcpy(tempAddr, 			 serverList[j].addr		);
				strcpy(serverList[j].addr,	 serverList[j+1].addr	);
				strcpy(serverList[j+1].addr, tempAddr				);
			}

	return;

}

/****************************************************************************/

/*
	Description:	Print the list of servers and there addresses
	
	Called by:		Main
*/

void PrintServerNames(serverList, numServers, defaultConnection)

	SERVER	serverList[];		/* List of servers and there addresses		*/
	int		numServers;			/* Number of servers found					*/
	WORD	defaultConnection;	/* Default connection						*/

{

	int		i,					/* Loop counter								*/
			status;				/* Status message for this server			*/
	WORD	connection;			/* Connection ID to a server in the list	*/

	/*
		Clear the message that says we are reading server names
	*/
	fprintf(stderr, GetMessage(ERASE_LINE));

	/*
		If output is being sent to a file, tell user that we are doing so
	*/
	if (outputToFile)
		fprintf(stderr, GetMessage(WRITING_TO_FILE));

	/*
		Now print out all the servers
	*/
	for ( i = 0 ; i <= numServers-1 ; i++ )
	{
		/*
			See if its time to print a header
		*/
		if (((i % (linesPerScreen - 2) == 0) && pause) || i == 0)
		{
			Print(GetMessage(HEADER_1));
			Print(GetMessage(HEADER_2));
		}

		/*
			See if we are attached to this server
		*/
		status = STATUS_UNATTACHED;
		if (!NWGetConnectionID(serverList[i].name, MY_SESSION,
							   &connection, NULL))
		{
			if (connection == defaultConnection)
				status = STATUS_DEFAULT;
			else
				status = STATUS_ATTACHED;
		}

		/*
			Print the server name and address
		*/
		Print("%-47.47s%-24.24s%-8.8s\n", serverList[i].name,
			  serverList[i].addr, GetMessage(status));
	}

	/*
		Tell how many servers were found
	*/
	if (numServers)
		Print(GetMessage(NUMBER_OF_SERVERS_FOUND), numServers);
	else
	{
		if (IsWild(targetServer))
			Print(GetMessage(NO_MATCHING_SERVER), targetServer);
		else
			Print(GetMessage(NO_SUCH_SERVER), targetServer);
	}

	/*
		If data was being written to a file, erase the line that
		tells him we are writing to the file
	*/
	if (outputToFile)
		fprintf(stderr, GetMessage(ERASE_LINE));

	/*
		Return to caller
	*/
	return;

}

/****************************************************************************/

/*
	Description:	Print some data to standard output, pausing if needed
					after each screen full
				
	Called by:		PrintServerNames
*/

void Print(formatString, ...)

	char	*formatString;		/* Format control string					*/

{

	int		 c;					/* Character input from keyboard			*/
	va_list	 args;				/* Pointer to variable arguments			*/
	static int					/* Lines printed so far						*/
			 lines = 0;

	/*
		Figure out where all those other parameters are
	*/
	va_start(args, formatString);

	/*
		Print the text required
	*/
	vprintf(formatString, args);

	/*
		Increment number of lines printed
	*/
	lines++;

	/*
		If we have printed enough lines, and pause is in effect, wait for
		a keypress
	*/
	if (lines == linesPerScreen && pause)
	{
		printf(GetMessage(PRESS_A_KEY));
		c = getch();

		/*
			Make sure it wasn't some sort of funky key
		*/
		if (c == 0 || c == 224)
			getch();

		/*
			If they don't want any more pauses, then don't
		*/
		if (c == 'C' || c == 'c')
			pause = FALSE;

		printf(GetMessage(ERASE_LINE));
		lines = 0;
	}
}

/****************************************************************************/

/*
	Description:	Print an error message, with optional numeric output
					and exit the program
	
	Called by:		Main
					ReadServerNames
*/
		
void Error(errorMessageID, ...)

	int		errorMessageID;		/* Error message ID to be printed			*/
								/* Variable arguments may follow			*/

{

	va_list	args;				/* Pointer to variable arguments			*/

	/*
		Figure out where all those other parameters are
	*/
	va_start(args, errorMessageID);

	/*
		Print the error message, beep, append a return and exit
	*/
	fprintf(stderr, GetMessage(ERASE_LINE));
	vfprintf(stderr, GetMessage(errorMessageID), args);
	fprintf(stderr, "\7\n");
	exit(1);

}

/****************************************************************************/

/*
	M Code for SList
*/

int ActionProcedure(int action)
{
	int abort = 0, unmatch = 0;

	switch(action)
{
		case   0: {
pause = FALSE;			} break;
	case   1: {
doDomain = TRUE;			} break;
	case   2: {
GetServer();       	} break;
	}
	return(abort? 2: (unmatch? 1: 0));
}

/****************************************************************************/

/*
	Description:	Get the name of the server to be listed, or the
					pattern of servers to search for
					
	Called by:		M Parser
*/

void GetServer()

{

   memcpy(targetServer, TChP(0), TVal(0));
   targetServer[TVal(0)] = '\0';

}
/****************************************************************************/

int WildMatch(pattern, string)
char *pattern, *string;
{
    char p, s;
    int l;
    char MatchPeriod;

    while ((p = (*pattern & 0x7F)) != '*')
    {
        s = *string & 0x7F;
        if (p == '?')
        {
            if ((*pattern == SQUESTION)
                    && ((s == 0) || (s == '.')))
            {
                /*special question skip period or end*/
                pattern++;
            }
            else
            {
                if (s == 0)
                    return (0); /*no char to match*/
                pattern++;	/*succeed on ? match*/
                string++;
            }
        }
        else if ((*pattern == SPERIOD) && (s == 0))
        {
            /*match  special period to end-of-string*/
            pattern++;
        }
        else if (p != s)
            return (0); /*failure on non-match*/
        else if (p == 0)
            return (1);	/*success on match to nulls*/
        else
        {
            /*chars match, but not end yet*/
            pattern++;
            string++;
        }
    }

    /* MUST MATCH AN ASTERISK WILDCARD */
    MatchPeriod = 0;
    while ((*pattern & 0x7F) == '*')
    {
        /* step over asterisks */
        if ((*pattern & 0x80) == 0)
            MatchPeriod = 0xFF;
        pattern++;
    }
    for (l = 0; (string[l] != 0) && ((string[l] != '.') || MatchPeriod);
            l++);	/*count max characters that may be skipped*/
    p = *pattern & 0x7F;
    while (l >= 0)
    {
        s = string[l] & 0x7F;
        if (((p == s) || (p == '?') || (p == '.'))
                && WildMatch(pattern, &string[l]))
            return (1);	/*success*/
        l--;
    }
    return (0);
}

/****************************************************************************/

int IsWild (s)
char *s;
{
    char ch;

    while ((ch = *s++ & 0x7F) != 0)
    {
        switch(ch)
        {
        case ASTERISK:
        case QUESTION:
        case SPERIOD:
        case SASTERISK:
        case SQUESTION:
            return(1);
        }
    }
    return (0);
}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void IsServerInADomain(
						WORD connectionID,	/* connection ID of server to change */
						int *isInADomain,		/* flag returns TRUE if in a domain */
						char *domainName )	/* name of the domain if isInDomain is TRUE */

{
	int ccode = TRUE;
	long tmpDummy;
	char serverName[SERVER_NAME_SIZE];
	NWGetFileServerName(connectionID, serverName);

	*isInADomain = FALSE;

	*domainName = 0; 
	if (serverName[0] != '\0')
		ccode = NWReadPropertyValue( (WORD) connectionID, serverName,
					OT_FILE_SERVER, (char far *)"DOMAIN_NAME", 1, (BYTE far *) domainName,
					(BYTE far *)&tmpDummy, (BYTE far *)&tmpDummy);

	if ( ccode==0 )
		*isInADomain = TRUE;

}	/* end IsServerInADomain */

/***************************************************************************/
void DisplayUsageLine(void)
{
	int isInADomain, jj;
	char domainName[PROPERTY_NAME_SIZE];
	WORD maxConnects;
	NWGetMaximumConnections(&maxConnects);
	for (jj=1; jj<=maxConnects; jj++)
		{
		IsServerInADomain( jj, &isInADomain,
							 domainName );
		if (isInADomain) break;
		}
	if (isInADomain)
		 Error(E_NNS_USAGE);
	else
		Error(E_USAGE);
}
/**************************************************************************/

/**** SetScrollParms  ****************************************************
 *
 * Input:	None;
 *
 * Output:	none
 *
 * Comment:	This routine will detect if output is redirected to a 
 *				file and will enable or disable pausing accordingly.  Also
 *				this routine will detect the number of rows in the current
 *				video mode so that scrolling will work properly.
 *
 ****/
void SetScrollParms()
{

#ifdef DOS
	union REGS inregs, outregs;
#endif

	
	/*	Assume that we are going to pause after each screen full	*/
	pause = TRUE;

	
	/* Has output been redirected to a file? If so, don't pause! */
	if ( isatty( fileno( stdout ) ) )
		{
		pause = TRUE;
		outputToFile = FALSE;
		}
	else
		{
		pause = FALSE;
		outputToFile = TRUE;
		}

#ifdef DOS
	/* Issue BIOS call to get current # of screen lines */
	inregs.x.ax = 0x1130;
	inregs.h.bh = 0;
	inregs.x.dx = 0;
	int86( VIDEO_INT, &inregs, &outregs );
	if( outregs.x.dx != 0 )
		linesPerScreen = (BYTE)outregs.h.dl;
	else
#endif
		linesPerScreen = MIN_LINES;
}
/****************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天一区二区| 宅男噜噜噜66一区二区66| 国产亚洲制服色| 国产乱码精品一品二品| 精品国产欧美一区二区| 国产一二精品视频| 国产欧美日韩视频一区二区 | 亚洲精品亚洲人成人网| 91麻豆视频网站| 一区二区欧美国产| 欧美日韩和欧美的一区二区| 亚洲国产中文字幕在线视频综合| 欧美视频在线播放| 丝袜亚洲另类丝袜在线| 精品国产乱子伦一区| 国产成人av影院| 亚洲免费大片在线观看| 欧美日韩电影在线播放| 久久成人18免费观看| 久久久九九九九| 色综合久久88色综合天天6| 亚洲国产一区二区三区青草影视| 日韩三区在线观看| 丰满白嫩尤物一区二区| 亚洲一区在线看| 精品三级在线观看| 成人av网在线| 日韩电影在线免费| 国产精品麻豆欧美日韩ww| 欧美色电影在线| 国产麻豆成人传媒免费观看| 专区另类欧美日韩| 日韩免费看的电影| 99久久免费国产| 蜜臀a∨国产成人精品| 国产精品二区一区二区aⅴ污介绍| 欧美在线啊v一区| 国产精品88av| 天堂午夜影视日韩欧美一区二区| 国产亚洲一区二区三区| 在线视频欧美区| 国产精品亚洲а∨天堂免在线| 亚洲精品国产品国语在线app| 精品三级av在线| 欧美日韩中文字幕一区| 成人免费看视频| 免费观看一级欧美片| 亚洲色图视频网| 久久久亚洲午夜电影| 欧美日韩久久久一区| 99麻豆久久久国产精品免费优播| 免费精品视频最新在线| 亚洲午夜久久久久久久久电影院| 国产日韩在线不卡| 日韩三级av在线播放| 欧美三级中文字幕| 99国产精品一区| 国产福利精品导航| 久草精品在线观看| 日韩不卡一二三区| 亚洲午夜久久久久久久久久久| 最新日韩av在线| 国产亚洲欧美日韩日本| 欧美一区二区成人| 欧美三级午夜理伦三级中视频| 99久久er热在这里只有精品66| 国产精品亚洲人在线观看| 极品瑜伽女神91| 日本女优在线视频一区二区| 亚洲国产成人porn| 亚洲综合另类小说| 一区二区三区中文字幕| 亚洲欧美区自拍先锋| 亚洲欧洲日产国码二区| 国产精品久线在线观看| 久久久国产精品麻豆| 久久久久久久久久久久久久久99| 日韩美女视频在线| 精品人伦一区二区色婷婷| 日韩精品综合一本久道在线视频| 欧美精品欧美精品系列| 91精品国产色综合久久不卡蜜臀 | 波波电影院一区二区三区| 国产精品香蕉一区二区三区| 国产精一区二区三区| 国产尤物一区二区| 国产福利精品导航| av不卡在线播放| 一本色道a无线码一区v| 欧美影院一区二区三区| 在线视频综合导航| 欧美精品国产精品| 欧美一区二区三区视频在线| 日韩精品中文字幕在线一区| 欧美xingq一区二区| 国产日韩欧美精品综合| 国产精品久久久久久久浪潮网站 | 欧美日韩精品三区| 欧美一区二区在线免费播放| 欧美变态tickling挠脚心| 国产日韩欧美制服另类| 亚洲人成网站在线| 亚洲成人黄色小说| 美国欧美日韩国产在线播放| 国产一区二区调教| 91香蕉视频污在线| 538prom精品视频线放| 精品国产免费人成在线观看| 欧美国产日本视频| 亚洲自拍偷拍九九九| 美女视频一区二区三区| 国产99久久久精品| 欧美在线观看一二区| 精品日韩在线观看| 国产精品久久三| 午夜国产精品一区| 国产激情视频一区二区三区欧美| 91亚洲精品乱码久久久久久蜜桃 | 亚洲丝袜另类动漫二区| 亚洲国产精品一区二区久久| 美女视频黄频大全不卡视频在线播放| 国产91丝袜在线播放| 欧洲一区在线电影| 久久久99免费| 亚洲五月六月丁香激情| 国产福利91精品| 欧美日韩综合不卡| 国产精品污www在线观看| 天天综合网天天综合色| 成人三级伦理片| 日韩亚洲国产中文字幕欧美| 国产精品丝袜一区| 男女性色大片免费观看一区二区 | 18成人在线视频| 精彩视频一区二区三区| 在线欧美小视频| 欧美激情一区不卡| 蜜桃av一区二区| 欧美视频三区在线播放| 国产午夜精品理论片a级大结局 | 亚洲一区视频在线观看视频| 国产精品一线二线三线精华| 欧美日韩一区精品| 亚洲欧洲韩国日本视频| 国产又黄又大久久| 日韩精品一区二区在线| 亚洲图片有声小说| 91精品福利视频| 中文字幕永久在线不卡| 国产精品影音先锋| 久久中文字幕电影| 久久精品国产亚洲aⅴ| 欧美日韩在线三级| 一区二区三区91| 91啪亚洲精品| 亚洲欧洲国产专区| 成人av网站免费观看| 国产视频不卡一区| 国产麻豆成人传媒免费观看| 日韩免费看的电影| 久久精品国内一区二区三区 | 久久综合色之久久综合| 免费不卡在线观看| 欧美一卡在线观看| 日本最新不卡在线| 欧美一级理论性理论a| 午夜精品久久久久久不卡8050| 在线观看欧美精品| 亚洲精品国产成人久久av盗摄 | 久久久久久影视| 国内成人精品2018免费看| 精品日韩99亚洲| 国产综合色在线视频区| 久久久亚洲午夜电影| 国产a区久久久| 国产精品久久久久久久久免费桃花 | 国产在线看一区| 久久亚洲精品小早川怜子| 国产乱淫av一区二区三区| 精品国产污污免费网站入口 | 国产成人免费在线| 国产日韩精品一区二区三区| 国产成a人无v码亚洲福利| 国产精品网站导航| 色综合天天视频在线观看| 一区二区三区毛片| 欧美狂野另类xxxxoooo| 蜜臀精品一区二区三区在线观看| 欧美大片一区二区三区| 国产精品综合久久| 亚洲欧洲国产日本综合| 欧美日韩精品三区| 精品一区二区久久久| 国产精品色哟哟网站| 一本到高清视频免费精品| 天堂va蜜桃一区二区三区漫画版| 日韩午夜精品电影| 成人性视频免费网站| 一级精品视频在线观看宜春院| 91精选在线观看|