Beispiel #1
0
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");
	}
}
Beispiel #2
0
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);
}