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

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

?? libwrapper.c

?? 編譯工具
?? C
字號:
/* * libwrapper.c - wrapper around Visual C++'s "LIB" program to perform * file name translation (from unix-like to dos-like names). * * Both GNUWIN32 and OpenNT file names are supported - the first argument * to this program specifies which. * * Compile this program with "cl libwrapper.c advapi32.lib". */#include <windows.h>#include <stdio.h>#include <process.h>#include <string.h>#define MAX_MOUNTS 256int  GetCygwinMounts(void);void GetGnuwin32Mounts(void);void SortMounts();void GetOpenNTMounts(void);char *TranslateFileName(char *in, int offset);char *EscapeDoubleQuotes(char *in);int gnuwin32 = 0;int opennt = 0;int main(int argc, char **argv){  int rc;  int i;  if (argc > 1 && strcmp(argv[1], "-gnuwin32") == 0) {    if (!GetCygwinMounts())      GetGnuwin32Mounts();    SortMounts();    gnuwin32 = 1;  } else if (argc > 1 && strcmp(argv[1], "-opennt") == 0) {    GetOpenNTMounts();    opennt = 1;  } else {    fprintf(stderr,	    "%s: must specify either -gnuwin32 or -opennt as first argument",	    argv[0]);    return 1;  }  argv++;  argc--;  argv[0] = "lib";  printf("lib");  for (i = 1; i < argc; i++) {    if (argv[i][0] == '-') {      switch (argv[i][1]) {      default:	break;      }    } else {      /* just a file argument */      if (i == 1) {	/* first arg is library name */	int len = strlen(argv[i]);	char *tmp = malloc(len + 6);	sprintf(tmp, "/OUT:%s", argv[i]);	argv[i] = TranslateFileName(tmp,5);      } else {	argv[i] = TranslateFileName(argv[i],0);      }    }    if (strchr(argv[i], '"')) {      argv[i] = EscapeDoubleQuotes(argv[i]);    }    printf(" %s", argv[i]);  }  printf("\n");  rc = spawnvp(_P_WAIT,argv[0],argv);  if (rc == -1) {    fprintf(stderr,"%s: ",argv[0]);    perror("");    return 1;  }  return rc;}char *EscapeDoubleQuotes(char *in){  int i, j;  char *out = malloc(strlen(in) * 2 + 1);  j = 0;  for (i = 0; i < strlen(in); i++) {    if (in[i] == '"') {      out[j++] = '\\';    }    out[j++] = in[i];  }  out[j] = '\0';  return out;}char *dos[MAX_MOUNTS];char *unix[MAX_MOUNTS];int index[MAX_MOUNTS];int nmounts;char *TranslateFileName(char *in, int offset){  int i;  char *out = NULL;  for (i = 0; i < nmounts; i++) {    char *upath = unix[index[i]];    char *dpath = dos[index[i]];    if (strncmp(upath, &in[offset], strlen(upath)) == 0) {      out = malloc(strlen(in) - strlen(upath) + strlen(dpath) + 1);      strncpy(out, in, offset);      strcpy(out + offset, dpath);      strcat(out, &in[offset + strlen(upath)]);      break;    }  }  if (!out) {    out = malloc(strlen(in) + 1);    strcpy(out, in);  }  for (i = offset; i < strlen(out); i++) {    if (out[i] == '/') {      out[i] = '\\';    }  }  return out;}void GetOpenNTMounts(void){  char c;  nmounts = 0;  for (c = 'A'; c <= 'Z'; c++) {    unix[nmounts] = (char *)malloc(5);    sprintf(unix[nmounts], "//%c/", c);    dos[nmounts] = (char *)malloc(4);    sprintf(dos[nmounts], "%c:/", c);    index[nmounts] = nmounts;    nmounts++;  }  for (c = 'a'; c <= 'z'; c++) {    unix[nmounts] = (char *)malloc(5);    sprintf(unix[nmounts], "//%c/", c);    dos[nmounts] = (char *)malloc(4);    sprintf(dos[nmounts], "%c:/", c);    index[nmounts] = nmounts;    nmounts++;  }}void GetGnuwin32Mounts(void){  HKEY hkey;  LONG rc;  int len;  char key[256];  for (nmounts = 0; nmounts < MAX_MOUNTS; nmounts++) {    sprintf(key,	    "Software\\Cygnus Solutions\\CYGWIN.DLL setup\\b15.0\\mounts\\%02X"	    ,nmounts);    if (RegOpenKeyEx(HKEY_CURRENT_USER,		     key, 0, KEY_READ, &hkey) != ERROR_SUCCESS) {      if (nmounts == 0) {	printf("Couldn't find registry key '%s' - RegOpenKey error %d\n",	       key, GetLastError());	exit(1);      }      break;    }    if (RegQueryValueEx(hkey,"unix",NULL,NULL,NULL,&len) != ERROR_SUCCESS) {      printf("RegQueryValueEx failed - error %d\n",GetLastError());      exit(1);    }    unix[nmounts] = (char *)malloc(len+1);    RegQueryValueEx(hkey, "unix", NULL, NULL, unix[nmounts], &len);    if (RegQueryValueEx(hkey,"native",NULL,NULL,NULL,&len) != ERROR_SUCCESS) {      printf("RegQueryValueEx failed - error %d\n",GetLastError());      exit(1);    }    if (strcmp(unix[nmounts], "/") == 0) {      dos[nmounts] = (char *)malloc(len+2);      RegQueryValueEx(hkey, "native", NULL, NULL, dos[nmounts], &len);      dos[nmounts][len-1] = '\\';      dos[nmounts][len] = 0;    } else {      dos[nmounts] = (char *)malloc(len+1);      RegQueryValueEx(hkey, "native", NULL, NULL, dos[nmounts], &len);    }  }}intGetCygwinMounts(){    static char	key[] = "Software\\Cygnus Solutions\\Cygwin\\mounts v2";    HKEY	hkey;    HKEY	hkey1;    char	upath[1024];    DWORD	upathlen;    DWORD	len;    DWORD	i;    LONG	rc;    char        c;    char*       drvprefix;    if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, key, 0, KEY_READ, &hkey)	!= ERROR_SUCCESS)	return 0;    nmounts = 0;    if (RegQueryValueEx (hkey, "cygdrive prefix", NULL, NULL, NULL, &len)	    == ERROR_SUCCESS) {      drvprefix = (char *) malloc (len + 2);      RegQueryValueEx (hkey, "cygdrive prefix", NULL, NULL, drvprefix, &len);      if (drvprefix[strlen(drvprefix)-1] == '/')	drvprefix[strlen(drvprefix)-1] = '\0';          for (c = 'A'; c <= 'Z'; c++) {	unix[nmounts] = (char *)malloc(strlen(drvprefix) + 4);	sprintf(unix[nmounts], "%s/%c/", drvprefix, c);	dos[nmounts] = (char *)malloc(4);	sprintf(dos[nmounts], "%c:/", c);	index[nmounts] = nmounts;	nmounts++;      }      for (c = 'a'; c <= 'z'; c++) {	unix[nmounts] = (char *)malloc(strlen(drvprefix) + 4);	sprintf(unix[nmounts], "%s/%c/", drvprefix, c);	dos[nmounts] = (char *)malloc(4);	sprintf(dos[nmounts], "%c:/", c);	index[nmounts] = nmounts;	nmounts++;      }    }    for (i = 0; i < MAX_MOUNTS; i++) {	upathlen = sizeof(upath);	rc = RegEnumKeyEx (hkey, i, upath, &upathlen, NULL, NULL, NULL, NULL);	if (rc == ERROR_NO_MORE_ITEMS)	    break;	if (rc != ERROR_SUCCESS) {	    printf ("RegEnumKeyEx(%d) failed - error %d\n", i, GetLastError());	    exit(1);	}	if (RegOpenKeyEx (hkey, upath, 0, KEY_READ, &hkey1)	    != ERROR_SUCCESS) {	    printf ("RegOpenKeyEx() failed - error %d\n", GetLastError());	    exit(1);	}	unix[nmounts] = (char *) malloc (upathlen + 1);	strcpy (unix[nmounts], upath);	if (RegQueryValueEx (hkey1, "native", NULL, NULL, NULL, &len)	    != ERROR_SUCCESS) {	    printf("RegQueryValueEx failed - error %d\n",GetLastError());	    exit(1);	}	if (strcmp (unix[nmounts], "/") == 0) {	    dos[nmounts] = (char *) malloc (len + 2);	    RegQueryValueEx (hkey1, "native", NULL, NULL, dos[nmounts], &len);	    dos[nmounts][len-1] = '\\';	    dos[nmounts][len] = 0;	} else {	    dos[nmounts] = (char *) malloc (len + 1);	    RegQueryValueEx (hkey1, "native", NULL, NULL, dos[nmounts], &len);	}	nmounts++;    }    return 1;}intlongest_first (const void *pi, const void *pj){    int i = *(int *) pi;    int j = *(int *) pj;    return strlen (unix[j]) - strlen (unix[i]);}voidSortMounts(){    int i;    for (i = 0; i < nmounts; i++)	index[i] = i;    qsort (index, nmounts, sizeof(int), longest_first);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
人人爽香蕉精品| 色噜噜狠狠色综合欧洲selulu| 国产精品蜜臀在线观看| 91精品国产美女浴室洗澡无遮挡| 成人午夜伦理影院| 黑人精品欧美一区二区蜜桃| 婷婷国产在线综合| 亚洲最大的成人av| 欧美成人欧美edvon| 精品视频一区 二区 三区| aaa国产一区| 国产经典欧美精品| 激情五月婷婷综合网| 青娱乐精品视频| 天天爽夜夜爽夜夜爽精品视频| 一区二区三区中文字幕| 国产精品国产三级国产三级人妇 | 99精品视频一区二区| 国产美女视频一区| 国产美女视频91| 国产专区综合网| 国产麻豆视频精品| 国产宾馆实践打屁股91| 亚洲一区av在线| 亚洲午夜一二三区视频| 亚洲一区二区三区激情| 亚洲一区二区三区视频在线| 亚洲国产精品久久人人爱| 亚洲日本va午夜在线电影| 欧美成人精品二区三区99精品| 日韩精品一区二区在线观看| 日韩欧美高清在线| 日韩精品在线网站| 久久女同精品一区二区| 中文字幕精品一区二区三区精品| 精品国产免费人成在线观看| 日韩欧美激情在线| 国产视频一区在线观看| 亚洲特黄一级片| 一区二区三区欧美| 一区二区三区不卡视频| 日日夜夜精品免费视频| 久久99久国产精品黄毛片色诱| 国内精品国产成人国产三级粉色| 国产精品一区二区91| 99re视频精品| 337p亚洲精品色噜噜| 欧美电视剧在线看免费| 精品sm捆绑视频| 国产精品毛片久久久久久| 一区二区三区视频在线看| 亚洲.国产.中文慕字在线| 蜜臀av亚洲一区中文字幕| 色综合久久久久综合体桃花网| 精品精品国产高清a毛片牛牛 | 亚洲一区在线观看免费| 国产一区二区三区视频在线播放| 在线日韩av片| 亚洲日本一区二区三区| 国产精品一区免费在线观看| 日韩欧美www| 亚洲国产aⅴ天堂久久| 99re在线精品| 国产精品麻豆欧美日韩ww| 精品一区精品二区高清| 91精品国产综合久久精品麻豆 | 国产综合久久久久影院| 日韩一区二区在线看| 日韩av午夜在线观看| 欧美三级蜜桃2在线观看| 亚洲人成亚洲人成在线观看图片 | 亚洲精品国产第一综合99久久| 国产精品一区二区久激情瑜伽| 亚洲精品一区二区三区蜜桃下载| 日韩高清在线一区| 制服丝袜成人动漫| 日韩高清在线电影| 欧美一级夜夜爽| 日韩国产精品91| 欧美大胆人体bbbb| 另类调教123区| 欧美精品一区二区三区久久久 | 一色屋精品亚洲香蕉网站| 成人在线一区二区三区| 国产欧美一区二区精品久导航| 国产在线精品一区二区夜色 | 精品一区二区三区免费播放| 欧美一区日韩一区| 国内精品视频666| 日本一区二区三区免费乱视频| 粉嫩aⅴ一区二区三区四区五区| 欧美国产成人在线| 色综合视频在线观看| 亚洲福利视频导航| 精品国产一区二区三区久久久蜜月 | 国产清纯在线一区二区www| 国产精品123区| 最新不卡av在线| 在线观看网站黄不卡| 日本欧美一区二区三区乱码| 欧美精品一区视频| av成人老司机| 三级久久三级久久久| 久久久久久久综合| 一本一道久久a久久精品| 日本成人超碰在线观看| 国产欧美一区在线| 91福利国产精品| 美女网站色91| 国产精品成人午夜| 91 com成人网| 不卡的av网站| 美女免费视频一区二区| 国产精品乱码妇女bbbb| 欧美精品久久99久久在免费线| 国产精品综合一区二区三区| 亚洲女子a中天字幕| 欧美成人video| 91高清视频在线| 国产精品一区在线| 日韩 欧美一区二区三区| 国产精品国产自产拍在线| 欧美一级二级三级乱码| 91国偷自产一区二区开放时间| 免费成人av在线播放| 亚洲精品精品亚洲| 国产午夜精品久久久久久久| 91麻豆精品国产自产在线观看一区| 成人午夜精品一区二区三区| 视频一区中文字幕国产| 最新国产成人在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 欧美天堂一区二区三区| 成人免费视频网站在线观看| 蜜臀91精品一区二区三区 | 欧美日韩久久一区二区| 成人免费视频免费观看| 国产精品一区二区久久精品爱涩| 日本少妇一区二区| 日韩精品91亚洲二区在线观看| 一二三区精品视频| 国产精品无遮挡| 欧美国产一区二区在线观看| 精品国产免费一区二区三区四区 | 国产精品久久久久永久免费观看 | 免费高清在线视频一区·| 亚洲国产视频网站| 亚洲日穴在线视频| 国产精品乱人伦| 国产精品黄色在线观看| 国产精品卡一卡二| 亚洲国产高清在线| 日本一区二区电影| 中文欧美字幕免费| 国产精品国产三级国产三级人妇| 久久久99精品免费观看| 久久精品免费在线观看| 久久嫩草精品久久久精品一| 久久久久久久电影| 国产精品私人自拍| 亚洲欧洲色图综合| 伊人性伊人情综合网| 亚洲与欧洲av电影| 日韩和欧美一区二区| 秋霞成人午夜伦在线观看| 激情国产一区二区| 国产精品香蕉一区二区三区| 国产999精品久久久久久| av电影在线观看一区| 欧美自拍偷拍午夜视频| 4438x成人网最大色成网站| 精品剧情在线观看| 中文字幕av在线一区二区三区| 中文字幕亚洲区| 亚洲一区二区三区四区的| 蜜臀va亚洲va欧美va天堂| 国产99久久久国产精品潘金| 97久久精品人人澡人人爽| 欧美性色黄大片| 精品乱人伦小说| ㊣最新国产の精品bt伙计久久| 亚洲一区二区在线视频| 蜜臀久久久99精品久久久久久| 国产成人亚洲精品青草天美| 色综合久久99| 亚洲精品一区二区三区香蕉| 国产精品乱人伦中文| 亚洲成人免费在线观看| 国产精品资源在线观看| 欧美在线一区二区三区| 精品久久久久99| 亚洲欧美日韩国产手机在线| 久久99久久久久久久久久久| 91麻豆免费看片| 精品国产污污免费网站入口 | 日韩欧美国产综合一区| 国产精品不卡一区二区三区| 婷婷一区二区三区| www.99精品| 精品成人在线观看|