Date: Thu, 1 Aug 2013 04:50:01 GMT From: Jan Beich <jbeich@tormail.org> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/172542: [patch] FICL assumes standalone environment for testmain Message-ID: <201308010450.r714o1RK073365@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/172542; it has been noted by GNATS. From: Jan Beich <jbeich@tormail.org> To: Peter Jeremy <peter@rulingia.com> Cc: bug-followup@freebsd.org Subject: Re: bin/172542: [patch] FICL assumes standalone environment for testmain Date: Thu, 01 Aug 2013 04:43:04 +0000 --=-=-= Content-Type: text/plain testmain was further broken by freaddir in r253172. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=ficl_testmain.diff Index: sys/boot/ficl/loader.c =================================================================== --- sys/boot/ficl/loader.c (revision 253788) +++ sys/boot/ficl/loader.c (working copy) @@ -33,11 +33,17 @@ *******************************************************************/ #ifdef TESTMAIN +#include <sys/stat.h> +#include <dirent.h> +#include <fcntl.h> +#include <stdio.h> #include <stdlib.h> +#include <time.h> +#include <unistd.h> #else #include <stand.h> +#include "bootstrap.h" #endif -#include "bootstrap.h" #include <string.h> #include "ficl.h" @@ -135,9 +141,9 @@ void ficlGetenv(FICL_VM *pVM) { #ifndef TESTMAIN - char *name; + char *name, *value; #endif - char *namep, *value; + char *namep; int names; #if FICL_ROBUST > 1 @@ -243,9 +249,9 @@ void ficlFindfile(FICL_VM *pVM) { #ifndef TESTMAIN - char *name; + char *type, *name; #endif - char *type, *namep, *typep; + char *namep, *typep; struct preloaded_file* fp; int names, types; @@ -511,7 +517,7 @@ static void pfread(FICL_VM *pVM) */ static void pfreaddir(FICL_VM *pVM) { - struct dirent *d; + struct dirent *d = NULL; int fd; #if FICL_ROBUST > 1 @@ -519,7 +525,15 @@ static void pfreaddir(FICL_VM *pVM) #endif fd = stackPopINT(pVM->pStack); +#ifdef TESTMAIN + static DIR *dir; + if (lseek(fd, 0, SEEK_CUR) == 0) + dir = fdopendir(fd); + if (dir != NULL) + d = readdir(dir); +#else d = readdirfd(fd); +#endif if (d != NULL) { stackPushPtr(pVM->pStack, d->d_name); stackPushINT(pVM->pStack, strlen(d->d_name)); --=-=-=--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308010450.r714o1RK073365>