亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
色婷婷综合久久| 91美女精品福利| 国产精品高潮久久久久无| 日韩欧美亚洲国产精品字幕久久久| 欧美一区二区三区系列电影| 91麻豆文化传媒在线观看| 欧美午夜片在线看| 国产一区二区日韩精品| 欧美一卡二卡三卡四卡| 国产成人在线视频网站| 有坂深雪av一区二区精品| 欧美日韩一区二区欧美激情| 日本色综合中文字幕| xnxx国产精品| 91麻豆免费观看| 日本不卡视频在线观看| 国产日韩欧美麻豆| 欧美亚洲精品一区| 日韩国产精品久久| 国产精品素人视频| 欧美另类videos死尸| 国产一区二区在线电影| 亚洲黄色性网站| 久久综合久久综合久久综合| 91视频com| 韩国成人在线视频| 一区二区三区影院| 精品国产免费人成电影在线观看四季| 欧美日韩国产高清一区二区三区| 韩国理伦片一区二区三区在线播放| 亚洲情趣在线观看| 精品国产乱码久久久久久久| 99riav久久精品riav| 激情深爱一区二区| 亚洲一区二区三区激情| 国产视频一区在线观看 | 欧美日韩精品欧美日韩精品| 久久99精品国产麻豆婷婷洗澡| 最新日韩av在线| 欧美白人最猛性xxxxx69交| 日本韩国一区二区三区视频| 韩国精品主播一区二区在线观看 | 91视频.com| 国产在线精品免费| 日日噜噜夜夜狠狠视频欧美人 | 精品少妇一区二区三区免费观看| 色综合一个色综合| 国产成人在线观看免费网站| 蜜桃一区二区三区四区| 亚洲国产人成综合网站| 亚洲欧美国产高清| 日本一区二区在线不卡| 久久综合精品国产一区二区三区| 欧美日韩久久不卡| 色婷婷av一区二区三区之一色屋| 国产精品影视网| 久久草av在线| 日韩国产一区二| 亚洲图片欧美视频| 亚洲一级片在线观看| 亚洲四区在线观看| 国产精品剧情在线亚洲| 久久亚洲免费视频| 久久综合色一综合色88| 日韩女优视频免费观看| 4438x成人网最大色成网站| 欧美日韩五月天| 欧美午夜精品一区| 一本大道久久精品懂色aⅴ| 99精品视频免费在线观看| 大陆成人av片| 粉嫩av一区二区三区粉嫩| 国产成人av电影在线| 国产aⅴ综合色| 国产精品一级二级三级| 国产一区二区看久久| 国产精品综合一区二区| 国产激情一区二区三区桃花岛亚洲| 精品一区二区综合| 国产揄拍国内精品对白| 久久爱www久久做| 精品一区二区免费在线观看| 激情综合色综合久久综合| 精品系列免费在线观看| 国产精品一区二区三区乱码| 国产精品自在欧美一区| 大胆亚洲人体视频| 91色在线porny| 欧美日韩高清一区二区不卡| 678五月天丁香亚洲综合网| 在线播放91灌醉迷j高跟美女| 欧美精品tushy高清| 精品免费一区二区三区| 久久久久久一级片| √…a在线天堂一区| 亚洲最大的成人av| 裸体一区二区三区| 国产一区二区福利视频| yourporn久久国产精品| 在线观看成人小视频| 欧美一区二区精品久久911| 久久久亚洲精品一区二区三区| 国产精品福利av| 日日噜噜夜夜狠狠视频欧美人 | av激情成人网| 欧美日韩另类一区| 亚洲精品一区二区三区影院| 国产精品久久久久久久午夜片| 亚洲影院久久精品| 国产精品综合二区| 在线观看视频91| 久久综合中文字幕| 亚洲女同女同女同女同女同69| 青娱乐精品视频在线| 成人美女视频在线观看18| 欧美三级日本三级少妇99| 久久视频一区二区| 一区二区三区欧美在线观看| 久久电影网站中文字幕| 一本大道久久a久久精二百 | 成人小视频免费在线观看| 欧美日韩视频在线第一区| 国产三级久久久| 丝袜国产日韩另类美女| 东方aⅴ免费观看久久av| 欧美嫩在线观看| 国产精品福利一区| 韩国毛片一区二区三区| 欧美日本乱大交xxxxx| 国产精品日产欧美久久久久| 日韩福利电影在线| 在线日韩av片| 中文子幕无线码一区tr| 麻豆一区二区在线| 欧美日韩综合不卡| 国产精品国产三级国产普通话蜜臀 | 另类欧美日韩国产在线| 色噜噜狠狠色综合中国| 国产欧美一区二区精品久导航| 偷偷要91色婷婷| 欧美性高清videossexo| 国产精品久久毛片a| 国内精品久久久久影院薰衣草| 在线成人午夜影院| 亚洲自拍偷拍综合| 色一情一乱一乱一91av| 国产精品久久久久久久浪潮网站| 国产一区二区三区蝌蚪| 欧美一区二区三区视频免费播放 | 97超碰欧美中文字幕| 久久久久久97三级| 国产原创一区二区| 亚洲精品一区二区精华| 另类的小说在线视频另类成人小视频在线| 日本韩国一区二区三区| 亚洲免费伊人电影| k8久久久一区二区三区| 国产精品久久久久永久免费观看 | 91麻豆精品国产91久久久久久| 亚洲一区二区av在线| 在线中文字幕一区| 亚洲成人在线网站| 欧美日韩极品在线观看一区| 亚洲成人1区2区| 欧美日韩精品欧美日韩精品| 午夜精品久久久久| 4438成人网| 国内精品国产成人国产三级粉色 | 日韩亚洲欧美一区二区三区| 亚洲电影视频在线| 欧美乱熟臀69xxxxxx| 日韩制服丝袜av| 日韩欧美中文字幕一区| 另类调教123区| 国产亚洲欧洲一区高清在线观看| 国产成人精品一区二区三区四区| 久久久久久久久久看片| 成人激情小说乱人伦| 亚洲欧洲精品一区二区精品久久久 | 欧美一区二区三区婷婷月色| 男人操女人的视频在线观看欧美| 欧美一区二区三区播放老司机| 青娱乐精品在线视频| 26uuu另类欧美亚洲曰本| 国产成人亚洲综合色影视| 国产精品青草综合久久久久99| 99v久久综合狠狠综合久久| 《视频一区视频二区| 欧美麻豆精品久久久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美成人aa大片| av福利精品导航| 亚洲成av人片| 久久久久亚洲蜜桃| 欧美在线你懂的| 久久99精品久久久久久久久久久久 | 久久99蜜桃精品| 国产精品久久久久影院色老大| 欧美日韩免费高清一区色橹橹| 国产一区欧美一区|