bin/172542: [patch] FICL assumes standalone environment for testmain
Jan Beich
jbeich at tormail.org
Thu Aug 1 04:50:02 UTC 2013
The following reply was made to PR bin/172542; it has been noted by GNATS.
From: Jan Beich <jbeich at tormail.org>
To: Peter Jeremy <peter at rulingia.com>
Cc: bug-followup at 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));
--=-=-=--
More information about the freebsd-bugs
mailing list