[q-lang-cvs] q/src qmfuns.c,1.22,1.23
Brought to you by:
agraef
From: Albert G. <ag...@us...> - 2005-10-13 21:48:08
|
Update of /cvsroot/q-lang/q/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4673 Modified Files: qmfuns.c Log Message: fix up remaining builtins Index: qmfuns.c =================================================================== RCS file: /cvsroot/q-lang/q/src/qmfuns.c,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** qmfuns.c 13 Oct 2005 21:14:53 -0000 1.22 --- qmfuns.c 13 Oct 2005 21:47:59 -0000 1.23 *************** *** 3389,3393 **** --- 3389,3399 ---- release_lock(); #endif + #if defined(HAVE_UNICODE) && defined(HAVE_ICONV) + cmd = fromutf8(cmd, NULL); + #endif fp = popen(cmd, modestr); + #if defined(HAVE_UNICODE) && defined(HAVE_ICONV) + free(cmd); + #endif #ifdef USE_THREADS acquire_lock(); *************** *** 3520,3529 **** static qmversion(THREAD* thr) { ! return pushstr(thr, strdup(version)); } static qmsysinfo(THREAD* thr) { ! return pushstr(thr, strdup(sysinfo)); } --- 3526,3535 ---- static qmversion(THREAD* thr) { ! return pushstr(thr, toutf8(version, NULL)); } static qmsysinfo(THREAD* thr) { ! return pushstr(thr, toutf8(sysinfo, NULL)); } *************** *** 3533,3560 **** if (args[0]->fno == STRVALOP) { char *s = args[0]->data.s; ! int l0 = strlen(s), l = strlen(qpath)+l0; ! char *buf = malloc((l+3)*sizeof(char)); ! char *name = malloc((l+MAXSTRLEN+3)*sizeof(char)); ! if (buf && name) { ! absname(name, searchlib(buf, s)); ! if (!chkfile(name)) { ! char *t = malloc((l0+3)*sizeof(char)); ! if (!t) goto errexit; ! strcat(strcpy(t, s), ".q"); ! absname(name, searchlib(buf, t)); ! free(t); ! } ! if (chkfile(name)) { ! name = realloc(name, (strlen(name)+1)*sizeof(char)); ! return pushstr(thr, name); } else { ! free(buf); free(name); return 0; } } else { - errexit: thr->qmstat = MEM_OVF; - if (buf) free(buf); - if (name) free(name); return 0; } --- 3539,3576 ---- if (args[0]->fno == STRVALOP) { char *s = args[0]->data.s; ! if ((s = fromutf8(s, NULL))) { ! int l0 = strlen(s), l = strlen(qpath)+l0; ! char *buf = malloc((l+3)*sizeof(char)); ! char *name = malloc((l+MAXSTRLEN+3)*sizeof(char)); ! if (buf && name) { ! absname(name, searchlib(buf, s)); ! if (!chkfile(name)) { ! char *t = malloc((l0+3)*sizeof(char)); ! if (!t) goto errexit; ! strcat(strcpy(t, s), ".q"); ! absname(name, searchlib(buf, t)); ! free(t); ! } ! free(buf); ! if (chkfile(name)) { ! free(s); ! s = toutf8(name, NULL); ! free(name); ! return pushstr(thr, s); ! } else { ! free(s); ! free(name); ! return 0; ! } } else { ! errexit: ! thr->qmstat = MEM_OVF; ! free(s); ! if (buf) free(buf); ! if (name) free(name); return 0; } } else { thr->qmstat = MEM_OVF; return 0; } |