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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tclmacenv.c

?? tcl是工具命令語(yǔ)言
?? C
字號(hào):
/*  * tclMacEnv.c -- * *	Implements the "environment" on a Macintosh. * * Copyright (c) 1995-1996 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * RCS: @(#) $Id: tclMacEnv.c,v 1.2 1998/09/14 18:40:04 stanton Exp $ */#include <Gestalt.h>#include <Folders.h>#include <TextUtils.h>#include <Resources.h>#include <string.h>#include "tcl.h"#include "tclInt.h"#include "tclMacInt.h"#include "tclPort.h"#define kMaxEnvStringSize 	255#define kMaxEnvVarSize 		100#define kLoginnameTag 		"LOGIN="#define kUsernameTag 		"USER="#define kDefaultDirTag 		"HOME="/*  * The following specifies a text file where additional environment variables  * can be set.  The file must reside in the preferences folder.  If the file  * doesn't exist NO error will occur.  Commet out the difinition if you do  * NOT want to use an environment variables file.  */#define kPrefsFile	 		"Tcl Environment Variables"/*  * The following specifies the Name of a 'STR#' resource in the application  * where additional environment variables may be set.  If the resource doesn't * exist no errors will occur.  Commet it out if you don't want it. */#define REZ_ENV "\pTcl Environment Variables"/* Globals */char **environ = NULL;/* * Declarations for local procedures defined in this file: */static char ** RezRCVariables _ANSI_ARGS_((void));static char ** FileRCVariables _ANSI_ARGS_((void));static char ** PathVariables _ANSI_ARGS_((void));static char ** SystemVariables _ANSI_ARGS_((void));static char * MakeFolderEnvVar _ANSI_ARGS_((char * prefixTag,	long whichFolder));static char * GetUserName _ANSI_ARGS_((void));/* *---------------------------------------------------------------------- * * RezRCVariables -- * *  Creates environment variables from the applications resource fork. *  The function looks for the 'STR#' resource with the name defined *  in the #define REZ_ENV.  If the define is not defined this code *  will not be included.  If the resource doesn't exist or no strings *  reside in the resource nothing will happen. * * Results: *	ptr to value on success, NULL if error. * * Side effects: *	Memory is allocated and returned to the caller. * *---------------------------------------------------------------------- */#ifdef REZ_ENVstatic char ** RezRCVariables(){    Handle envStrs = NULL;    char** rezEnv = NULL;    short int numStrs;    envStrs = GetNamedResource('STR#', REZ_ENV);    if (envStrs == NULL) return NULL;    numStrs = *((short *) (*envStrs));	    rezEnv = (char **) ckalloc((numStrs + 1) * sizeof(char *));    if (envStrs != NULL) {	ResType	theType;	Str255 theName;	short theID, index = 1;	int i = 0;	char* string;		GetResInfo(envStrs, &theID, &theType, theName);	for(;;) {	    GetIndString(theName, theID, index++);	    if (theName[0] == '\0') break;	    string = (char *) ckalloc(theName[0] + 2);	    strncpy(string, (char *) theName + 1, theName[0]);	    string[theName[0]] = '\0';	    rezEnv[i++] = string;	}	ReleaseResource(envStrs);			rezEnv[i] = NULL;	return rezEnv;    }	    return NULL;}#endif/* *---------------------------------------------------------------------- * * FileRCVariables -- * *  Creates environment variables from a file in the system preferences *  folder.  The function looks for a file in the preferences folder  *  a name defined in the #define kPrefsFile.  If the define is not  *  defined this code will not be included.  If the resource doesn't exist or *  no strings reside in the resource nothing will happen. * * Results: *	ptr to value on success, NULL if error. * * Side effects: *	Memory is allocated and returned to the caller. * *---------------------------------------------------------------------- */#ifdef kPrefsFilestatic char ** FileRCVariables(){    char *prefsFolder = NULL;    char *tempPtr = NULL;    char **fileEnv = NULL;    FILE *thePrefsFile = NULL;    int	i;    FSSpec prefDir;    OSErr err;    Handle theString = NULL;    Tcl_Channel chan;    int size;    Tcl_DString lineRead;	    err = FSpFindFolder(kOnSystemDisk, kPreferencesFolderType, 	    kDontCreateFolder, &prefDir);    if (err != noErr) {	return NULL;    }    err = FSpPathFromLocation(&prefDir, &size, &theString);    if (err != noErr) {	return NULL;    }    (void) Munger(theString, size, NULL, 0, kPrefsFile, strlen(kPrefsFile));    HLock(theString);    chan = Tcl_OpenFileChannel(NULL, *theString, "r", 0);    HUnlock(theString);    DisposeHandle(theString);    if (chan == NULL) {	return NULL;    }    /*     * We found a env file.  Let start parsing it.     */    fileEnv = (char **) ckalloc((kMaxEnvVarSize + 1) * sizeof(char *));    i = 0;    Tcl_DStringInit(&lineRead);    while (Tcl_Gets(chan, &lineRead) != -1) {	/*	 * First strip off new line char	 */	if (lineRead.string[lineRead.length-1] == '\n') {	    lineRead.string[lineRead.length-1] = '\0';	}	if (lineRead.string[0] == '\0' || lineRead.string[0] == '#') {	    /*	     * skip empty lines or commented lines	     */	    Tcl_DStringSetLength(&lineRead, 0);	    continue;	}			tempPtr = (char *) ckalloc(lineRead.length + 1);	strcpy(tempPtr, lineRead.string);	fileEnv[i++] = tempPtr;	Tcl_DStringSetLength(&lineRead, 0);    }	    fileEnv[i] = NULL;    Tcl_Close(NULL, chan);    Tcl_DStringFree(&lineRead);	    return fileEnv;}#endif/* *---------------------------------------------------------------------- * * MakeFolderEnvVar -- * *	This function creates "environment" variable by taking a prefix and *	appending a folder path to a directory.  The directory is specified *	by a integer value acceptable by the FindFolder function. * * Results: *	The function returns an *allocated* string.  If the folder doesn't *	exist the return string is still allocated and just contains the *	given prefix. * * Side effects: *	Memory is allocated and returned to the caller. * *---------------------------------------------------------------------- */static char * MakeFolderEnvVar(    char * prefixTag,		/* Prefix added before result. */    long whichFolder)		/* Constant for FSpFindFolder. */{    char * thePath = NULL;    char * result = NULL;    OSErr theErr = noErr;    Handle theString = NULL;    FSSpec theFolder;    int size;    Tcl_DString pathStr;    Tcl_DString tagPathStr;        Tcl_DStringInit(&pathStr);    theErr = FSpFindFolder(kOnSystemDisk, whichFolder, 	    kDontCreateFolder, &theFolder);    if (theErr == noErr) {	theErr = FSpPathFromLocation(&theFolder, &size, &theString);			HLock(theString);	tclPlatform = TCL_PLATFORM_MAC;	Tcl_DStringAppend(&pathStr, *theString, -1);	HUnlock(theString);	DisposeHandle(theString);			Tcl_DStringInit(&tagPathStr);	Tcl_DStringAppend(&tagPathStr, prefixTag, strlen(prefixTag));	Tcl_DStringAppend(&tagPathStr, pathStr.string, pathStr.length);	Tcl_DStringFree(&pathStr);		/*	 * Make sure the path ends with a ':'	 */	if (tagPathStr.string[tagPathStr.length - 1] != ':') {	    Tcl_DStringAppend(&tagPathStr, ":", 1);	}	/*	 * Don't free tagPathStr - rather make sure it's allocated	 * and return it as the result.	 */	if (tagPathStr.string == tagPathStr.staticSpace) {	    result = (char *) ckalloc(tagPathStr.length + 1);	    strcpy(result, tagPathStr.string);	} else {	    result = tagPathStr.string;	}    } else {	result = (char *) ckalloc(strlen(prefixTag) + 1);	strcpy(result, prefixTag);    }	    return result;}/* *---------------------------------------------------------------------- * * PathVariables -- * *  Creates environment variables from the system call FSpFindFolder. *  The function generates environment variables for many of the  *  commonly used paths on the Macintosh. * * Results: *	ptr to value on success, NULL if error. * * Side effects: *	Memory is allocated and returned to the caller. * *---------------------------------------------------------------------- */static char ** PathVariables(){    int i = 0;    char **sysEnv;    char *thePath = NULL;        sysEnv = (char **) ckalloc((12) * sizeof(char *));    sysEnv[i++] = MakeFolderEnvVar("PREF_FOLDER=", kPreferencesFolderType);    sysEnv[i++] = MakeFolderEnvVar("SYS_FOLDER=", kSystemFolderType);    sysEnv[i++] = MakeFolderEnvVar("TEMP=", kTemporaryFolderType);    sysEnv[i++] = MakeFolderEnvVar("APPLE_M_FOLDER=", kAppleMenuFolderType);    sysEnv[i++] = MakeFolderEnvVar("CP_FOLDER=", kControlPanelFolderType);    sysEnv[i++] = MakeFolderEnvVar("DESK_FOLDER=", kDesktopFolderType);    sysEnv[i++] = MakeFolderEnvVar("EXT_FOLDER=", kExtensionFolderType);    sysEnv[i++] = MakeFolderEnvVar("PRINT_MON_FOLDER=",	    kPrintMonitorDocsFolderType);    sysEnv[i++] = MakeFolderEnvVar("SHARED_TRASH_FOLDER=",	    kWhereToEmptyTrashFolderType);    sysEnv[i++] = MakeFolderEnvVar("TRASH_FOLDER=", kTrashFolderType);    sysEnv[i++] = MakeFolderEnvVar("START_UP_FOLDER=", kStartupFolderType);    sysEnv[i++] = NULL;	    return sysEnv;}/* *---------------------------------------------------------------------- * * SystemVariables -- * *  Creates environment variables from various Mac system calls. * * Results: *	ptr to value on success, NULL if error. * * Side effects: *	Memory is allocated and returned to the caller. * *---------------------------------------------------------------------- */static char ** SystemVariables(){    int i = 0;    char ** sysEnv;    char * thePath = NULL;    Handle theString = NULL;    FSSpec currentDir;    int size;        sysEnv = (char **) ckalloc((4) * sizeof(char *));    /*     * Get user name from chooser.  It will be assigned to both     * the USER and LOGIN environment variables.     */    thePath = GetUserName();    if (thePath != NULL) {	sysEnv[i] = (char *) ckalloc(strlen(kLoginnameTag) + strlen(thePath) + 1);	strcpy(sysEnv[i], kLoginnameTag);	strcpy(sysEnv[i]+strlen(kLoginnameTag), thePath);	i++;	sysEnv[i] = (char *) ckalloc(strlen(kUsernameTag) + strlen(thePath) + 1);	strcpy(sysEnv[i], kUsernameTag);	strcpy(sysEnv[i]+strlen(kUsernameTag), thePath);	i++;    }    /*     * Get 'home' directory     */#ifdef kDefaultDirTag    FSpGetDefaultDir(&currentDir);    FSpPathFromLocation(&currentDir, &size, &theString);    HLock(theString);    sysEnv[i] = (char *) ckalloc(strlen(kDefaultDirTag) + size + 4);    strcpy(sysEnv[i], kDefaultDirTag);    strncpy(sysEnv[i]+strlen(kDefaultDirTag) , *theString, size);    if (sysEnv[i][strlen(kDefaultDirTag) + size - 1] != ':') {	sysEnv[i][strlen(kDefaultDirTag) + size] = ':';	sysEnv[i][strlen(kDefaultDirTag) + size + 1] = '\0';    } else {	sysEnv[i][strlen(kDefaultDirTag) + size] = '\0';    }    HUnlock(theString);    DisposeHandle(theString);    i++;#endif    sysEnv[i++] = NULL;    return sysEnv;}/* *---------------------------------------------------------------------- * * TclMacCreateEnv -- * *	This function allocates and populates the global "environ" *	variable.  Entries are in traditional Unix format but variables *	are, hopefully, a bit more relevant for the Macintosh. * * Results: *	The number of elements in the newly created environ array. * * Side effects: *	Memory is allocated and pointed too by the environ variable. * *---------------------------------------------------------------------- */intTclMacCreateEnv(){    char ** sysEnv = NULL;    char ** pathEnv = NULL;    char ** fileEnv = NULL;    char ** rezEnv = NULL;    int count = 0;    int i, j;    sysEnv = SystemVariables();    if (sysEnv != NULL) {	for (i = 0; sysEnv[i] != NULL; count++, i++) {	    /* Empty Loop */	}    }    pathEnv = PathVariables();    if (pathEnv != NULL) {	for (i = 0; pathEnv[i] != NULL; count++, i++) {	    /* Empty Loop */	}    }#ifdef kPrefsFile    fileEnv = FileRCVariables();    if (fileEnv != NULL) {	for (i = 0; fileEnv[i] != NULL; count++, i++) {	    /* Empty Loop */	}    }#endif#ifdef REZ_ENV    rezEnv = RezRCVariables();    if (rezEnv != NULL) {	for (i = 0; rezEnv[i] != NULL; count++, i++) {	    /* Empty Loop */	}    }#endif    /*     * Create environ variable     */    environ = (char **) ckalloc((count + 1) * sizeof(char *));    j = 0;	    if (sysEnv != NULL) {	for (i = 0; sysEnv[i] != NULL;)	    environ[j++] = sysEnv[i++];	ckfree((char *) sysEnv);    }    if (pathEnv != NULL) {	for (i = 0; pathEnv[i] != NULL;)	    environ[j++] = pathEnv[i++];	ckfree((char *) pathEnv);    }#ifdef kPrefsFile    if (fileEnv != NULL) {	for (i = 0; fileEnv[i] != NULL;)	    environ[j++] = fileEnv[i++];	ckfree((char *) fileEnv);    }#endif#ifdef REZ_ENV    if (rezEnv != NULL) {	for (i = 0; rezEnv[i] != NULL;)	    environ[j++] = rezEnv[i++];	ckfree((char *) rezEnv);    }#endif    environ[j] = NULL;    return j;}/* *---------------------------------------------------------------------- * * GetUserName -- * *	Get the user login name. * * Results: *  ptr to static string, NULL if error. * * Side effects: *	None. * *---------------------------------------------------------------------- */static char *GetUserName(){    static char buf[33];    short refnum;    Handle h;	    refnum = CurResFile();    UseResFile(0);    h = GetResource('STR ', -16096);    UseResFile(refnum);    if (h == NULL) {	return NULL;    }        HLock(h);    strncpy(buf, (*h)+1, **h);    buf[**h] = '\0';    HUnlock(h);    ReleaseResource(h);    return(buf[0] ? buf : NULL);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美精品在线| 午夜精品久久久久久不卡8050 | 国产精品成人一区二区三区夜夜夜 | 久草在线在线精品观看| 国产精品欧美久久久久无广告| 精品污污网站免费看| 成人黄色一级视频| 国产一区欧美二区| 麻豆精品在线播放| 日韩在线a电影| 亚洲成a人v欧美综合天堂| 亚洲精品视频免费看| 欧美国产精品中文字幕| 亚洲精品一线二线三线| 欧美一二三区在线观看| 欧美一卡二卡三卡| 欧美午夜在线一二页| 国产精品一级黄| 久久精工是国产品牌吗| 精品一区二区精品| 丝袜美腿亚洲一区| 亚洲理论在线观看| 亚洲一二三区视频在线观看| 亚洲综合自拍偷拍| 亚洲国产精品嫩草影院| 婷婷六月综合网| 亚洲三级小视频| 一区二区三区四区视频精品免费| 1区2区3区国产精品| 亚洲人成电影网站色mp4| 一区二区三区视频在线看| 中文字幕一区二区三区色视频 | 久久中文娱乐网| 久久久久久久久久久99999| 国产日韩视频一区二区三区| 国产精品亲子乱子伦xxxx裸| 久久精品网站免费观看| 国产精品毛片高清在线完整版| 亚洲欧洲一区二区在线播放| 亚洲精品日产精品乱码不卡| 午夜国产不卡在线观看视频| 一区二区三区免费在线观看| 亚洲免费在线观看视频| 亚洲色图都市小说| 一区二区三区精品| 美女任你摸久久| 大胆欧美人体老妇| 在线免费一区三区| 日韩精品一区二区在线| 欧美韩日一区二区三区四区| 一区二区不卡在线播放 | 久久―日本道色综合久久| 国产色产综合色产在线视频 | 精品国产成人在线影院| 中文字幕欧美激情一区| 亚洲国产日日夜夜| 韩国精品主播一区二区在线观看 | 一区二区三区四区av| 男人的天堂亚洲一区| 成人在线视频一区二区| 欧美优质美女网站| 精品国产一区二区三区忘忧草| 中文字幕亚洲一区二区va在线| 亚洲成人免费av| 国产高清精品网站| 欧美日韩在线三区| 欧美激情综合在线| 三级影片在线观看欧美日韩一区二区| 国产一区在线视频| 欧美在线观看一区二区| 久久精品视频在线看| 午夜激情一区二区| 97精品电影院| 久久亚洲一区二区三区四区| 亚洲女爱视频在线| 精品中文字幕一区二区小辣椒| 91视频免费观看| 欧美精品一区二区久久婷婷| 亚洲精品欧美激情| 国产精品91xxx| 欧美日韩五月天| 亚洲色图制服诱惑| 国产精品自拍av| 欧美精品久久一区| 亚洲欧美偷拍卡通变态| 国产一区二区三区免费| 欧美精品一二三| 亚洲欧美偷拍另类a∨色屁股| 国内精品写真在线观看| 欧美精选在线播放| 伊人色综合久久天天| 国产91精品精华液一区二区三区| 欧美精品aⅴ在线视频| 欧美精品一区二区三区久久久| 日韩精品一区二区在线| 一区二区三区在线观看网站| 国产高清亚洲一区| 精品国产青草久久久久福利| 亚洲超碰97人人做人人爱| 一本到不卡免费一区二区| 国产蜜臀97一区二区三区| 亚洲大片精品永久免费| 精品剧情在线观看| 日本不卡视频一二三区| 欧美日韩第一区日日骚| 亚洲在线视频一区| 在线观看欧美日本| 一区二区三区在线视频播放| 99久久国产综合色|国产精品| 中文字幕高清不卡| 蜜臀av在线播放一区二区三区| 欧美中文字幕一区二区三区亚洲| 亚洲国产精品二十页| 国产在线精品不卡| 日韩一卡二卡三卡| 无码av中文一区二区三区桃花岛| 91国偷自产一区二区开放时间 | 日韩二区在线观看| 欧美日韩久久久| 亚洲视频电影在线| 99久久精品国产导航| 1024成人网| 色偷偷88欧美精品久久久| 亚洲图片激情小说| 99re热视频精品| 亚洲黄色小说网站| 欧美系列日韩一区| 天涯成人国产亚洲精品一区av| 欧美怡红院视频| 丝袜a∨在线一区二区三区不卡| 欧美日韩一级二级三级| 午夜伦欧美伦电影理论片| 在线成人av网站| 免费成人av在线| 欧美精品一区二区在线播放| 国产精品一区二区男女羞羞无遮挡| 久久久久国产免费免费| 粉嫩久久99精品久久久久久夜| 国产欧美综合色| 91香蕉国产在线观看软件| 亚洲人亚洲人成电影网站色| 色婷婷久久久久swag精品| 亚洲成人av电影在线| 欧美大黄免费观看| 国产91精品免费| 亚洲制服丝袜在线| 日韩欧美中文字幕公布| 国产在线不卡一区| 综合电影一区二区三区 | 美日韩一级片在线观看| 国产午夜精品一区二区| 91在线精品一区二区| 亚洲国产视频网站| 久久综合色天天久久综合图片| 国产99一区视频免费| 亚洲品质自拍视频网站| 欧美午夜精品一区二区蜜桃| 美腿丝袜亚洲三区| 最新久久zyz资源站| 欧美伦理视频网站| 国产精品一卡二| 亚洲一区二区三区影院| 久久一夜天堂av一区二区三区| caoporen国产精品视频| 一区二区三区视频在线观看| 欧美一卡2卡3卡4卡| 国产精品一线二线三线精华| 亚洲欧美日韩一区二区| 欧美日韩视频一区二区| 国产成人精品1024| 亚洲成人激情社区| 国产欧美一区二区在线观看| 欧美日韩国产一级片| 国产盗摄视频一区二区三区| 亚洲一区二区三区在线看| 久久色中文字幕| 欧美日韩国产片| 成人性视频网站| 亚洲一区二区三区视频在线 | 欧美夫妻性生活| a美女胸又www黄视频久久| 奇米综合一区二区三区精品视频| 18成人在线视频| 26uuu国产一区二区三区| 欧美日韩在线三区| 白白色亚洲国产精品| 麻豆精品在线看| 亚洲国产wwwccc36天堂| 精品国产欧美一区二区| 在线观看一区二区视频| 国产电影精品久久禁18| 亚洲午夜在线电影| 一区二区三区在线免费观看| 欧美激情一区二区在线| 日韩午夜激情电影| 欧美日韩不卡在线| 在线观看日韩电影| 国产成人精品亚洲日本在线桃色| 久久国产欧美日韩精品| 日韩高清不卡在线|