summaryrefslogtreecommitdiffstats
path: root/libxml2/os400/libxmlmain.c
diff options
context:
space:
mode:
Diffstat (limited to 'libxml2/os400/libxmlmain.c')
-rw-r--r--libxml2/os400/libxmlmain.c102
1 files changed, 0 insertions, 102 deletions
diff --git a/libxml2/os400/libxmlmain.c b/libxml2/os400/libxmlmain.c
deleted file mode 100644
index 91c848a..0000000
--- a/libxml2/os400/libxmlmain.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
-*** QADRT/QADRTMAIN2 substitution program.
-*** This is needed because the IBM-provided QADRTMAIN2 does not
-*** properly translate arguments by default or if no locale is provided.
-***
-*** See Copyright for the status of this software.
-***
-*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
-**/
-
-#include <stdlib.h>
-#include <string.h>
-#include <iconv.h>
-#include <errno.h>
-#include <locale.h>
-
-/* Do not use qadrt.h since it defines unneeded static procedures. */
-extern void QadrtInit(void);
-extern int QadrtFreeConversionTable(void);
-extern int QadrtFreeEnviron(void);
-extern char * setlocale_a(int, const char *);
-
-
-/* The ASCII main program. */
-extern int main_a(int argc, char * * argv);
-
-/* Global values of original EBCDIC arguments. */
-int ebcdic_argc;
-char * * ebcdic_argv;
-
-
-int
-main(int argc, char * * argv)
-
-{
- int i;
- int j;
- iconv_t cd;
- size_t bytecount = 0;
- char * inbuf;
- char * outbuf;
- size_t inbytesleft;
- size_t outbytesleft;
- char dummybuf[128];
- char tocode[32];
- char fromcode[32];
-
- ebcdic_argc = argc;
- ebcdic_argv = argv;
-
- /* Build the encoding converter. */
- strncpy(tocode, "IBMCCSID01208", sizeof tocode);
- strncpy(fromcode, "IBMCCSID000000000010", sizeof fromcode);
- cd = iconv_open(tocode, fromcode);
-
- /* Measure the arguments. */
- for (i = 0; i < argc; i++) {
- inbuf = argv[i];
- do {
- inbytesleft = 0;
- outbuf = dummybuf;
- outbytesleft = sizeof dummybuf;
- j = iconv(cd,
- &inbuf, &inbytesleft, &outbuf, &outbytesleft);
- bytecount += outbuf - dummybuf;
- } while (j == -1 && errno == E2BIG);
- /* Reset the shift state. */
- iconv(cd, NULL, &inbytesleft, &outbuf, &outbytesleft);
- }
-
- /* Allocate memory for the ASCII arguments and vector. */
- argv = (char * *) malloc((argc + 1) * sizeof *argv + bytecount);
-
- /* Build the vector and convert argument encoding. */
- outbuf = (char *) (argv + argc + 1);
- outbytesleft = bytecount;
-
- for (i = 0; i < argc; i++) {
- argv[i] = outbuf;
- inbuf = ebcdic_argv[i];
- inbytesleft = 0;
- iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
- iconv(cd, NULL, &inbytesleft, &outbuf, &outbytesleft);
- }
-
- iconv_close(cd);
- argv[argc] = NULL;
-
- /* Try setting the locale regardless of QADRT_ENV_LOCALE. */
- setlocale_a(LC_ALL, "");
-
- /* Call the program. */
- i = main_a(argc, argv);
-
- /* Clean-up allocated items. */
- free((char *) argv);
- QadrtFreeConversionTable();
- QadrtFreeEnviron();
-
- /* Terminate. */
- return i;
-}