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

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

?? slist.m

?? Novell Slist 源代碼
?? M
?? 第 1 頁 / 共 2 頁
字號:
/*****************************************************************************

EXHIBIT A

"The contents of this file are subject to the Novell Free Source Agreement 
Version 1.0 (the "Agreement"); you may not use this file except in 
compliance with the Agreement. You may obtain a copy of the Agreement at 
http://developer.novell.com/.

Software distributed under the Agreement is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the Agreement 
for the specific language governing rights and limitations under the 
Agreement.

The Original Code is slist.m, released under the Novell Free Source License 
Agreement 1.0 on 1999.

The Initial Developer of the Original Code is Novell. Portions created 
by Novell are Copyright (C) 1988-93, Novell, Inc. All Rights Reserved.

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

#include "SList.H"

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

/*
	Global variables
*/
	int		pause,				/* Should we pause during output?			*/
			doDomain,				/* Domain option to output Domains on internet */
			outputToFile,		/* Is output going to a file?				*/
			linesPerScreen;		/* Number of lines to be printed per screen	*/
	char	targetServer[SERVER_NAME_SIZE];	/* Server name or pattern to match			*/
	WORD  numberConnInUse; /* Used to check for free conn to get Domain Names */

	char *VERSION = "VeRsIoN=3.75";
	char *COPYRIGHT = "CoPyRiGhT=(c) Copyright 1988-1993, Novell, Inc.  All rights reserved.";
	char *NNS_MSG = "NaMe SeRvIcE=A NetWare Name Service Utility";

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

/*
	Description:	Main routine for SList
	
	Called by:		Other worldly forces
*/

void main(argc, argv)

	int		 argc;				/* Number of command line arguments			*/
	char	*argv[];			/* Command line arguments					*/

{

	int		 numServers,		/* Number of servers found					*/
			 i;					/* Loop counter								*/
	char	 commandLine[256];	/* Command line arguments					*/
	WORD	 ccode,				/* Error code								*/
			 connection;		/* Default connection						*/
	/*
		Assume that we are going to pause after each screen full
	*/
	pause = TRUE;
	
	/*
		If we are not sending output to the screen, don't pause
	*/

	SetScrollParms();
	/*
		Assume they want to list all servers
	*/
	strcpy(targetServer, "*");
			 
	/*
		Put all the arguments into one command line buffer and convert
		it to upper case
	*/
	strcpy(commandLine, "");
	for ( i = 1 ; i < argc ; i++ )
	{
		if (i > 1)
			strcat(commandLine, " ");
		strcat(commandLine, strupr(argv[i]));
	}
	
	/*
		Make sure there are no control characters in the command line
	*/
	for ( i = 0 ; commandLine[i] != '\0' ; i++ )
		if (commandLine[i] < ' ' || commandLine[i] >= '\x7F')
			Error(E_CONTROL_CHARACTERS_FOUND);

	/*
		Try to parse the command line
	*/
	DefineTokenTable(INITIALTOKENCOUNT, MAXTOKENCOUNT);
	SetParseAddress(commandLine);
	if (!Parse())
		DisplayUsageLine();

	/*
		Get a connection number to work with
	*/
	ccode = NWGetDefaultConnectionID(&connection);
	if (ccode)
		Error(E_NO_DEFAULT_CONNECTION, ccode);

	if(doDomain)
	{
		/*		One free connection is necessary to attach to servers to
			  	get Domain Names    */
		NWGetConnectionList (MY_SESSION, (WORD *)NULL, (WORD)NULL, &numberConnInUse);
		if (numberConnInUse > 7)
			Error(E_MAX_CONN_FOR_DOMAIN);
		DisplayDomainNames(connection);
		exit(0);
	}
	
	
	/*
		Read in the server names
	*/
	numServers = ReadServerNames(serverList, connection);

	/*
		Sort the servers by name
	*/
	SortServerNames(serverList, numServers);
	
	/*
		Print out the server names
	*/
	PrintServerNames(serverList, numServers, connection);

	/*
		Now, wasn't that easy?
	*/
	exit(0);

}
/****************************************************************************/
/*
	Description:  Displays all Domain Names found on the internet.
	
	Called by:		Main
*/

void DisplayDomainNames(defaultConnectionID)
WORD defaultConnectionID;
{

long serverID;
LIST *l, *serverPtr, *listPtr;
WORD currConnectionID, ccode, attachCCODE, more;
char serverName[SERVER_NAME_SIZE];
BYTE serverDomain[PROPERTY_NAME_SIZE];
int i,next, numberFound = 0, advanceFlag = TRUE;

	/* Let them know this may take a while */
	fprintf(stderr, GetMessage(READING_DOMAIN_NAMES));
	fprintf(stderr, "\n");
	
	/*	First build server list. */
   InitList();
   serverID = -1L;           /* Set up for scan sequence            */
   for (i = 0; ;i++)
   {
       ccode = NWScanObject(defaultConnectionID, "*", OT_FILE_SERVER, &serverID, 
                   serverName, (WORD far *)NULL, (BYTE far *)NULL, 
                   (BYTE far *)NULL, (BYTE far *)NULL);
       if (ccode != 0)
            break;
       l = AppendToList(serverName, (char *)NULL);
       if (l == NULL)
       {
			Error(E_BUILDING_SERVER_LIST);
       }

   }
	/*	Attach to servers found in server list, check if in given domain. */
	for(serverPtr = GetListHead(); serverPtr != NULL;serverPtr )
	{
		/* print out dots to show that something is still happening */

		advanceFlag = TRUE;	/* ART-this flag is used to determine when to  */
									/* advance in the list, and when not to.		  */

		fprintf(stderr, GetMessage(CHECKING), serverPtr->text);
	 	attachCCODE = NWAttachToFileServer(serverPtr->text, (WORD)0, &currConnectionID);
 		if((attachCCODE == 0) || (attachCCODE == ALREADY_ATTACHED))
		{	  
			/* See if server has DOMAIN_NAME property, if so it's value */
			ccode = NWReadPropertyValue(currConnectionID, serverPtr->text, 
								OT_FILE_SERVER, "DOMAIN_NAME", 1, serverDomain, 
								NULL, NULL);
			if (ccode == 0)
			{
					/* If there is a Domain is on current server             */
					/*	Copy the Domain name into the table for sorting   */
				strcpy(serverList[numberFound].name, serverDomain);
					/*	Increment number of Domains found	*/
				numberFound++;
					/* Remove all servers in that Domain from the master server list */
				more = next = 0;
				while (more != NO_SUCH_SEGMENT) 
				{
					next++;
					more = GetServerName(currConnectionID, DOMAIN_OBJ_TYPE,
										(char *)serverDomain, serverName, next);
					if(more == 0)	/* ART - No need to check the last entry again */
					{
						for(listPtr = GetListHead(); listPtr != NULL; 
																	listPtr = listPtr->next)
						{
							if(!strcmp(listPtr->text, serverName))
							{
								if ( serverPtr == listPtr ) /* if name is at head of list */
								{
									serverPtr = serverPtr->next; /* advance the head now  */
									advanceFlag = FALSE;		/* make sure the head of the list */
								}									/* is not advanced later		*/
								DeleteFromList(listPtr);	/* now you can delete the pointer */
								break;							/* stop  the comparison */
							}
						}
					}
				}
			}	
		}
		if(attachCCODE != ALREADY_ATTACHED)
			NWDetachFromFileServer(currConnectionID);	
		if ( advanceFlag == TRUE )	/* only advance the head pointer if the flag is set */
			serverPtr = serverPtr->next;	
	}
	DestroyList();
	SortServerNames(serverList, numberFound);	
	   /* Remove the Reading Domain Names message from the screen */
	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 Domains	*/
	for ( i = 0 ; i <= numberFound-1 ; i++ )
		Print("%-47.47s\n", serverList[i].name);
	/*	Tell how many Domains were found	*/
	if (numberFound)
		Print(GetMessage(NUMBER_OF_DOMAINS_FOUND), numberFound);
	else
			Print(GetMessage(NO_DOMAINS_FOUND));

	/*	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));

	exit(0);
}

/* for use in putting out dots */
void CheckDot( void )
{
	static time_t first_time=0;	
	static time_t next_time=0;
	static int dots = 0;

	time(&next_time);
	if (next_time - first_time > 5)
	{
		first_time = next_time;
		fprintf(stderr, ".");	
		dots++;
		if (dots > 50)
			fprintf(stderr, "\n");
	}
}
/****************************************************************************/

/*
	Description:	Gets a server name from SERVERS property of a Domain object.
	
	Called by:		Display Domain Names
*/
WORD GetServerName(WORD connectID, WORD type, char *name,char *server,int next)
{
	BYTE propValue[PROPERTY_NAME_SIZE];
	BYTE moreSeg = 0;
	WORD ccode = 0;												 

	strset(propValue, 0); 
	ccode = NWReadPropertyValue(connectID, name, type, "SERVERS", 
								(BYTE)((next/2)+(next%2)),	propValue, &moreSeg, NULL);
	if (ccode != 0) 
	   return(NO_SUCH_SEGMENT); /* if no more segments, return now */

  	if (next%2)		/* first half */
		memmove(server, propValue, 47);
	else				/* second half */
		memmove(server, &propValue[48], 47);

  	if ((server[0]>32) && (strlen(server) != 0))
			return(0); /* ok */
  	else 
  	{
		server[0] = NULL;
		return(1); /* no name at that position */
	}
} 

		

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

/*
	Description:	Read in a list of all the servers and their addresses
	
	Called by:		Main
*/

int ReadServerNames(serverList, connection)

	SERVER	serverList[];		/* List of servers and their addresses		*/
	WORD	connection;			/* Default connection						*/

{

	WORD	ccode1,				/* Return code from ScanObject calls		*/
			ccode2;				/* Return code from ReadProperty calls		*/
	int		numberFound = 0,	/* Number of servers found					*/
			match;				/* Should this server be included?			*/
	long	objectID = -1L;		/* Object number for ScanObject				*/
	char	objectName[OBJECT_NAME_SIZE];		/* Object name from ScanObject				*/
	NETADDRESS	address;			/* Address property read from bindery		*/

	/*
		Let the user know we are doing something
	*/
	fprintf(stderr, GetMessage(READING_SERVER_NAMES));

	/*
		Prime the pump with the first server
	*/
	ccode1 = NWScanObject(connection, "*", OT_FILE_SERVER, &objectID,
						  objectName, NULL, NULL, NULL, NULL);
	while (ccode1 == 0)
	{
		/*
			Does this server meet the qualifications?
		*/
		if (IsWild(targetServer))
			match = WildMatch(targetServer, objectName);
		else
			match = strcmp(targetServer, objectName) == 0;

		if (match)
		{
			/*
				Make sure we haven't exceeded the maximum number of servers
			*/
			if (numberFound >= MAX)
				Error(E_TOO_MANY_SERVERS, MAX);
		
			/*
				Copy the file server name into the table
			*/
			strcpy(serverList[numberFound].name, objectName);

			/*
				Now try to read the network address for the server
			*/		
			ccode2 = NWReadPropertyValue(connection, objectName,
										 OT_FILE_SERVER, "NET_ADDRESS",	1,
										 (BYTE *)&address, NULL, NULL);

			/*
				If network address was read correctly, save it, otherwise
				flag it as being unknown
			*/
			if (ccode2 == 0)
			{
				address.netAddress = NWLongSwap(address.netAddress);
				address.highNode   = NWWordSwap(address.highNode  );
				address.lowNode    = NWLongSwap(address.lowNode   );
				
				if (address.highNode == 0)
					sprintf(serverList[numberFound].addr,
							GetMessage(FORMAT_ONE),	address.netAddress,
							address.lowNode);
				else
					sprintf(serverList[numberFound].addr,
							GetMessage(FORMAT_TWO),	address.netAddress,
							address.highNode, address.lowNode);
			}
			else
				sprintf(serverList[numberFound].addr,
						GetMessage(CANT_READ_ADDRESS));

			/*
				Increment number of servers found
			*/
			numberFound++;
		}
				
		/*
			Try to find another file server
		*/
		ccode1 = NWScanObject(connection, "*", OT_FILE_SERVER, &objectID,
							  objectName, NULL, NULL, NULL, NULL);
	}

	/*
		Make sure we didn't get any bizarre error
	*/
	if (ccode1 != NO_SUCH_OBJECT)
		Error(E_READING_SERVER_NAMES, ccode1);

	return (numberFound);

}

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

/*
	Description:	Sort the list of the servers
	
	Called by:		Main
*/

void SortServerNames(serverList, numServers)

	SERVER	serverList[];		/* List of servers and their addresses		*/
	int		numServers;			/* Number of servers found					*/

{

	int		i,					/* Loop variable							*/
			j;					/* Loop variable							*/
	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		);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩和欧美的一区二区| 制服丝袜日韩国产| 亚洲成av人片在www色猫咪| 日韩精品一区二区三区四区视频 | 国产a区久久久| 亚洲最大成人综合| 国产精品热久久久久夜色精品三区| 色香蕉成人二区免费| 九九视频精品免费| 亚洲成人av一区二区| 国产精品久久久久久久久搜平片 | 国产aⅴ综合色| 免费日本视频一区| 亚洲制服丝袜在线| 亚洲蜜臀av乱码久久精品| 国产午夜精品美女毛片视频| 这里只有精品视频在线观看| 色呦呦国产精品| 粉嫩蜜臀av国产精品网站| 久久精品国产成人一区二区三区 | 亚洲精品欧美专区| 中文字幕在线观看不卡视频| 精品国产免费人成电影在线观看四季 | 欧美aaaaaa午夜精品| 国产精品素人视频| 久久天堂av综合合色蜜桃网| 欧美一级二级三级蜜桃| 欧美日韩国产免费| 欧美三级欧美一级| 91久久精品日日躁夜夜躁欧美| 国产在线观看一区二区| 韩日精品视频一区| 国产精品综合二区| 国产精品自拍网站| 风间由美性色一区二区三区| 东方欧美亚洲色图在线| 国产成人av一区二区三区在线| 免费欧美高清视频| 日韩国产成人精品| 蜜桃视频一区二区三区在线观看 | 亚洲色图19p| ●精品国产综合乱码久久久久| 久久网这里都是精品| 久久免费视频色| 国产午夜精品美女毛片视频| 欧美极品另类videosde| 欧美国产亚洲另类动漫| 国产精品乱码一区二三区小蝌蚪| 蜜桃视频在线观看一区| 日韩黄色免费电影| 蜜桃一区二区三区在线| 久草中文综合在线| 国产成人aaa| 色天使色偷偷av一区二区| 欧美中文字幕不卡| 日韩免费看网站| 久久久久国色av免费看影院| 国产精品久久影院| 亚洲国产成人av网| 奇米影视一区二区三区小说| 看片网站欧美日韩| 国产成人一级电影| 欧美在线观看一二区| 日韩一区二区在线看片| 国产午夜精品福利| 亚洲欧美视频一区| 麻豆国产91在线播放| 成人午夜精品一区二区三区| 色哦色哦哦色天天综合| 欧美日韩国产小视频| 久久久久国产免费免费| 亚洲精品福利视频网站| 视频一区国产视频| 国产91精品一区二区麻豆亚洲| 菠萝蜜视频在线观看一区| 欧美亚洲动漫精品| 亚洲精品一区二区三区福利| 国产精品久久免费看| 肉丝袜脚交视频一区二区| 国产毛片一区二区| 91官网在线免费观看| 精品国产一区二区精华| 亚洲精品国产无天堂网2021 | 中文字幕一区不卡| 日韩在线卡一卡二| 成人免费高清视频在线观看| 欧美美女黄视频| 久久久精品tv| 日韩经典一区二区| 波多野结衣中文字幕一区| 欧美一区中文字幕| 亚洲日本在线视频观看| 国产一区二区美女诱惑| 91成人网在线| 久久色在线观看| 天天综合色天天综合色h| 国产91精品一区二区麻豆网站| 欧美日韩一区二区在线观看| 中文欧美字幕免费| 免费在线观看视频一区| 一本色道**综合亚洲精品蜜桃冫 | 日韩欧美综合在线| 亚洲精选视频在线| 国产传媒久久文化传媒| 欧美一二三区在线| 亚洲一区二区精品视频| 91一区二区在线观看| 久久久久9999亚洲精品| 日本不卡在线视频| 在线一区二区三区四区五区| 国产欧美日韩视频一区二区| 免播放器亚洲一区| 欧美日韩国产片| 亚洲免费观看在线观看| 不卡电影一区二区三区| 2023国产精品视频| 日本欧美一区二区| 欧美精品色一区二区三区| 亚洲视频一二三| 欧美国产日本韩| 精品制服美女丁香| 538prom精品视频线放| 亚洲宅男天堂在线观看无病毒| 国产精品888| 2023国产精品| 国产麻豆欧美日韩一区| 久久先锋影音av鲁色资源| 国产一区在线视频| 精品国产乱码久久久久久牛牛 | 色中色一区二区| 亚洲精品亚洲人成人网在线播放| 国产成人在线视频播放| 久久精品夜色噜噜亚洲a∨ | youjizz久久| 国产精品国产精品国产专区不片| 国产在线不卡视频| 国产亚洲人成网站| 国产成人av电影免费在线观看| 久久丝袜美腿综合| 国产黄色精品视频| 国产精品天天看| 成人免费毛片高清视频| 国产精品乱码久久久久久 | 欧美在线观看一区| 一级特黄大欧美久久久| 欧美理论片在线| 青青国产91久久久久久| 欧美成人女星排名| 国产成人一区在线| 亚洲男人的天堂av| 欧美美女激情18p| 久久不见久久见免费视频7| 久久中文字幕电影| 成人av在线一区二区三区| 亚洲免费色视频| 欧美精品成人一区二区三区四区| 丝袜美腿成人在线| 精品久久久久久久久久久院品网 | 免费一级欧美片在线观看| 欧美v日韩v国产v| 国产91精品欧美| 亚洲精品日日夜夜| 欧美人妖巨大在线| 国产综合久久久久影院| 国产精品福利一区| 欧美日本国产视频| 国产精品91一区二区| 一区二区三区日韩精品| 欧美一区二区三区公司| 福利一区福利二区| 亚洲国产精品久久久久婷婷884 | 亚洲激情自拍视频| 日韩欧美亚洲国产精品字幕久久久 | 亚洲老妇xxxxxx| 日本久久一区二区| 麻豆精品视频在线观看免费| 国产精品成人午夜| 欧美一区二区三区思思人| 丁香网亚洲国际| 亚洲v精品v日韩v欧美v专区| 久久久久亚洲蜜桃| 日本电影欧美片| 国产精品系列在线播放| 一区二区高清在线| 2021国产精品久久精品| 欧美色涩在线第一页| 国产成a人亚洲精| 亚洲成人资源在线| 亚洲欧洲日韩一区二区三区| 欧美顶级少妇做爰| 92国产精品观看| 国产一区二区三区久久久| 樱桃国产成人精品视频| 国产日本欧洲亚洲| 日韩视频在线观看一区二区| 91国在线观看| 波多野结衣视频一区| 久久不见久久见免费视频1| 亚洲一区二区黄色| 国产精品国产精品国产专区不片|