void InitDesktop(void) { FILE *fp; char fname[256]; char buff[SIZE_BUFF+1]; char *head; char *key; char *value; DesktopAppTable = NewNameHash(); snprintf(fname, sizeof(fname), "%s/%s", ConfDir, DESKTOP_LIST); fp = fopen(fname, "r"); if (fp == NULL) { snprintf(fname, sizeof(fname), "%s/%s", GLCLIENT_DATADIR, DESKTOP_LIST); fp = fopen(fname, "r"); } if (fp != NULL) { while (fgets(buff, sizeof(buff), fp) != NULL) { head = strstr(buff, ":"); if (head != NULL) { key = StrnDup(buff, head - buff); head += 1; value = StrnDup(head, strlen(head) - 1); /* chop */ g_hash_table_insert(DesktopAppTable, key, value); } } fclose(fp); } else { MessageLog("cannot open applications list"); } }
static int _StartBatch(MessageHandler *handler, char *name, char *param) { int (*apl)(char *); int rc; ValueStruct *val; char *arg; OpenCOBOL_Conv = NewConvOpt(); ConvSetSize(OpenCOBOL_Conv, ThisBD->textsize, ThisBD->arraysize); ConvSetCodeset(OpenCOBOL_Conv, ConvCodeset(handler->conv)); if (handler->conv != NULL) { OpenCOBOL_Conv->fBigEndian = handler->conv->fBigEndian; } else { Error("handler->conv is NULL"); } InitMONFUNC(OpenCOBOL_Conv, OpenCOBOL_PackValue, OpenCOBOL_UnPackValue, OpenCOBOL_SizeValue); #ifdef DEBUG printf("starting [%s][%s]\n", name, param); #endif if ((apl = cob_resolve(name)) != NULL) { val = NewValue(GL_TYPE_CHAR); SetValueStringWithLength(val, param, ThisBD->textsize, NULL); arg = StrnDup(ValueToString(val, "euc-jisx0213"), ThisBD->textsize); StringC2Cobol(arg, ThisBD->textsize); rc = apl(arg); FreeValueStruct(val); xfree(arg); } else { Warning("%s - %s is not found.", cob_resolve_error(), name); rc = -1; } return (rc); }