You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
genkernel_fork/pkg/devfsd-1.3.25-dietlibc.patch

226 lines
5.9 KiB

diff -ruN devfsd.old/DIETLIBC devfsd/DIETLIBC
--- devfsd.old/DIETLIBC 1969-12-31 19:00:00.000000000 -0500
+++ devfsd/DIETLIBC 2003-12-09 14:07:52.668863472 -0500
@@ -0,0 +1,8 @@
+To build using dietlibc, run like this:
+
+CC="diet gcc" make has_dlopen=0 has_rpcsvc=0
+
+It will strip out the stuff that dietlibc doesn't
+support.
+
+
diff -ruN devfsd.old/GNUmakefile devfsd/GNUmakefile
--- devfsd.old/GNUmakefile 2003-12-09 12:34:13.000000000 -0500
+++ devfsd/GNUmakefile 2003-12-09 14:04:14.728995368 -0500
@@ -8,22 +8,34 @@
KERNEL_DIR = /usr/src/linux
endif
+has_dlopen := 0
+has_rpcsvc := 0
+
nsl_libs := $(wildcard /lib/libnsl.so.*)
+
ifneq ($(nsl_libs),)
-LIBNSL = $(shell for file in /lib/libnsl.so.[0-9]* ; do echo $$file ; done | sort -t . -n -k 2 | head -1)
+LIBNSL = $(shell for file in /lib/libnsl.so.[0-9]* ; do echo $$file ; done | sort -t . -n -k 2 | head -n1)
DEFINES += -DLIBNSL="\"$(LIBNSL)\""
endif
+ifneq ($(has_dlopen),1)
+DEFINES += -DNO_DLOPEN
+else
+LIBS += -ldl
+endif
+
+ifneq ($(has_rpcsvc),1)
+DEFINES += -DNO_RPCSVC
+endif
all: devfsd rpm.spec
-
OBJECTS = devfsd.o expression.o compat_name.o check_kernel.o
CFLAGS = -O2 -I. -I$(KERNEL_DIR)/include -Wall $(CEXTRAS) $(DEFINES)
devfsd: $(OBJECTS)
- $(CC) -O2 -o devfsd $(OBJECTS) $(LDFLAGS) -export-dynamic -ldl
+ $(CC) -O2 -o devfsd $(OBJECTS) $(LDFLAGS) -export-dynamic $(LIBS)
check_kernel.o: check_kernel.c
$(CC) -fomit-frame-pointer -O2 -c $<
diff -ruN devfsd.old/devfsd.c devfsd/devfsd.c
--- devfsd.old/devfsd.c 2003-12-09 12:34:13.000000000 -0500
+++ devfsd/devfsd.c 2003-12-09 14:05:45.967125064 -0500
@@ -282,9 +282,13 @@
#include <signal.h>
#include <regex.h>
#include <errno.h>
+#ifndef NO_DLOPEN
#include <dlfcn.h>
+#endif
+#ifndef NO_RPCSVC
#include <rpcsvc/ypclnt.h>
#include <rpcsvc/yp_prot.h>
+#endif
#include <karma.h>
#include "devfsd.h"
#include "version.h"
@@ -419,9 +423,15 @@
static void read_config_file (CONST char *path, flag optional,
unsigned long *event_mask);
static void process_config_line (CONST char *line, unsigned long *event_mask);
+
+#ifndef NO_DLOPEN
static void *dlsym_nofail (const char *file, void *handle, char *symbol);
+#endif
+
+#ifndef NO_RPCSVC
static int process_yp_line (int instatus, char *inkey, int inkeylen,
char *inval, int invallen, char *indata);
+#endif
static void load_libnsl (void);
static flag do_servicing (int fd, unsigned long event_mask);
static void service_name (const struct devfsd_notify_struct *info);
@@ -492,9 +502,11 @@
{"fd/2", "stderr"},
{NULL, NULL},
};
+#ifndef NO_RPCSVC
static int (*my_yp_all) (char *domain, char *map,
struct ypall_callback *callback); /* = NULL */
static int (*my_yp_get_default_domain) (char **domainptr); /* = NULL */
+#endif
static struct event_type
{
unsigned int type; /* The DEVFSD_NOTIFY_* value */
@@ -720,6 +732,7 @@
[RETURNS] Nothing.
*/
{
+#ifndef NO_RPCSVC
if (location[0] == '+')
{
/* It's a YP map */
@@ -742,7 +755,8 @@
SYSLOG (LOG_ERR, "error reading map: \"%s\"\n", location + 1);
exit (1);
}
- read_config_file (location, optional, event_mask);
+#endif
+ read_config_file (location, optional, event_mask);
} /* End Function read_config */
static void read_config_file (CONST char *path, flag optional,
@@ -919,6 +933,7 @@
}
new->u.execute.argv[num_args] = NULL;
}
+#ifndef NO_DLOPEN
else if ( (strcasecmp (what, "MFUNCTION") == 0) ||
(strcasecmp (what, "CFUNCTION") == 0) )
{
@@ -950,6 +965,7 @@
}
new->u.function.argv[num_args] = NULL;
}
+#endif
else if (strcasecmp (what, "COPY") == 0)
{
new->action.what = AC_COPY;
@@ -1001,6 +1017,7 @@
last_config = new;
} /* End Function process_config_line */
+#ifndef NO_DLOPEN
static void *dlsym_nofail (const char *file, void *handle, char *symbol)
{
void *result = dlsym (handle, symbol);
@@ -1011,9 +1028,11 @@
}
return (result);
} /* End Function dlsym_nofail */
+#endif
static void load_libnsl (void)
{
+#ifndef NO_RPCSVC
#ifdef LIBNSL /* It comes from a shared object */
void *libnsl_handle;
@@ -1031,8 +1050,10 @@
my_yp_all = yp_all;
my_yp_get_default_domain = yp_get_default_domain;
#endif
+#endif
} /* End Function load_libnsl */
+#ifndef NO_RPCSVC
static int process_yp_line (int instatus, char *inkey, int inkeylen,
char *inval, int invallen, char *indata)
{
@@ -1040,6 +1061,7 @@
if (invallen > 0) process_config_line (inval, (unsigned long *) indata);
return (0);
} /* End Function process_yp_line */
+#endif
static flag do_servicing (int fd, unsigned long event_mask)
/* [SUMMARY] Service devfs changes until a signal is received.
@@ -1232,6 +1254,7 @@
if (first_time)
{
+#ifndef NO_DLOPEN
void *lib;
first_time = FALSE;
@@ -1242,7 +1265,10 @@
}
else if (trace_level > 1)
fprintf (stderr, "/lib/modutils.so load failure: %s\n",dlerror() );
- }
+#else
+ fprintf(stderr, "dlopen() not supported in this build");
+#endif
+ }
argv[0] = "/sbin/modprobe";
argv[1] = "-k";
argv[2] = "-C";
@@ -1746,6 +1772,7 @@
}
first_config = NULL;
last_config = NULL;
+#ifndef NO_DLOPEN
for (so_entry = first_so; so_entry != NULL; so_entry = next)
{
next = so_entry->next;
@@ -1753,6 +1780,7 @@
if (so_entry->handle != RTLD_DEFAULT) dlclose (so_entry->handle);
free (so_entry);
}
+#endif
first_so = NULL;
} /* End Function free_config */
@@ -2055,6 +2083,7 @@
[RETURNS] A pointer to the object on success, else NULL.
*/
{
+#ifndef NO_DLOPEN
struct shared_object *so;
for (so = first_so; so != NULL; so = so->next)
@@ -2085,6 +2114,9 @@
so->next = first_so;
first_so = so;
return (so);
+#else
+ return(NULL);
+#endif
} /* End Function get_shared_object */
static flag expand_expression(char *output, unsigned int outsize,