#include #include #include /* * Create a wrapper that calls "link /OPTION". It is * used to emulate a missing lib.exe and dumpbin.exe. * * To create them compile: * cl /DCMD=L\"-lib\" /Felib wrapper.c * cl /DCMD=L\"-dump\" /Fedumpbin wrapper.c * * Author: Ralph Weires, symbian_at_ralph-weires.de * Some modifications by Mikolaj Zalewski */ wchar_t *encode_arg(wchar_t *arg) { wchar_t *buffer=(wchar_t *)malloc((wcslen(arg)*2+3)*sizeof(wchar_t)); wchar_t *output=buffer; wchar_t *backslash; int quotes=(wcschr(arg, L' ')!=NULL); if (quotes) *(buffer++)=L'"'; backslash=buffer; while (*arg) { if (*arg==L'"') { *(backslash++)=L'\\'; *(backslash++)=L'"'; buffer=backslash; } else if (*arg==L'\\') { *(backslash++)=L'\\'; *(backslash++)=L'\\'; buffer++; } else { *(buffer++)=*arg; backslash=buffer; } arg++; } if (quotes) { buffer=backslash; *(buffer++)=L'"'; } *buffer=0; return output; } int wmain (int argc, wchar_t* argv[]) { int i; wchar_t **linkargv; linkargv=malloc(sizeof(wchar_t *)*(argc+2)); linkargv[0]=L"link"; linkargv[1]=CMD; for (i=1; i