RFC: Alternative for exemaker
Adrian Buehlmann
adrian at cadifra.com
Sat Jun 23 04:13:26 CDT 2012
On 2012-06-23 08:49, Adrian Buehlmann wrote:
> #include <Python.h>
>
> #include <windows.h>
> #include <Shlwapi.h>
>
> #define _NUM_ARGS 100
>
> static char exename[1000];
> static char scriptname[1000];
> static char *pyargv[_NUM_ARGS + 10];
>
> int main(int argc, char *argv[])
> {
> int ret;
> int i;
>
> GetModuleFileName(NULL, exename, sizeof(exename));
>
> strncpy_s(scriptname, sizeof(scriptname), exename, sizeof(exename));
> PathRemoveFileSpec(scriptname);
> strcat_s(scriptname, sizeof(scriptname), "\\hg.py");
>
> pyargv[0] = exename;
> pyargv[1] = scriptname;
> for (i = 1; i < argc; i++) {
> if (i > _NUM_ARGS) {
> fprintf(stderr, "abort: too many arguments\n");
> return 255;
> }
> pyargv[1 + i] = argv[i];
> }
>
> Py_Initialize();
> ret = Py_Main(1 + i, pyargv);
> Py_Finalize();
> return ret;
This variant is a bit simpler:
n = 0;
pyargv[n++] = exename;
pyargv[n++] = scriptname;
for (i = 1; i < argc; i++) {
if (i > _NUM_ARGS) {
fprintf(stderr, "abort: too many arguments\n");
return 255;
}
pyargv[n++] = argv[i];
}
Py_Initialize();
ret = Py_Main(n, pyargv);
Py_Finalize();
return ret;
https://bitbucket.org/abuehl/hgexe/changeset/a649fb719581/raw
More information about the Mercurial-devel
mailing list