[Linux-diag-devel] Re: libsysfs & klibc
Brought to you by:
hegdevasant,
mananth
From: H. P. A. <hp...@zy...> - 2005-04-04 13:43:05
|
Christophe Varoqui wrote: > > I finally got my nose into the details of this, which I should have done earlier. > This is not dirent.h but mntent.h that libsysfs uses and is not present in klibc, my bad. > > If mntent.h is not to be added to klibc, then the following patch ensures klibc compatibility at the expense of a little brain in sysfs_get_fs_mnt_path(). This approach was initialy adopted in udev. > > Please let me know if the following patch is acceptable. I'd rather don't mess with the libsysfs building system myself, but I verified the lib builds fine with klcc with patch applied. <mntent.h> I really don't think has any business being in klibc. > > diff -ur sysfsutils-1.2.0/lib/sysfs_dir.c sysfsutils-1.2.0.klibcbuild/lib/sysfs_dir.c > --- sysfsutils-1.2.0/lib/sysfs_dir.c 2004-09-13 15:45:15.000000000 +0200 > +++ sysfsutils-1.2.0.klibcbuild/lib/sysfs_dir.c 2005-04-04 10:57:31.000000000 +0200 > @@ -273,7 +273,11 @@ > errno = EACCES; > return -1; > } > +#ifdef __KLIBC__ > + pgsize = PAGE_SIZE; > +#else > pgsize = sysconf(_SC_PAGESIZE); > +#endif > fbuf = (char *)calloc(1, pgsize+1); > if (fbuf == NULL) { > dprintf("calloc failed\n"); This should be: pgsize = getpagesize(); ... on both klibc and glibc. > diff -ur sysfsutils-1.2.0/lib/sysfs_utils.c sysfsutils-1.2.0.klibcbuild/lib/sysfs_utils.c > --- sysfsutils-1.2.0/lib/sysfs_utils.c 2004-09-13 15:45:15.000000000 +0200 > +++ sysfsutils-1.2.0.klibcbuild/lib/sysfs_utils.c 2005-04-04 10:40:52.000000000 +0200 > @@ -63,6 +63,10 @@ > static int sysfs_get_fs_mnt_path(const char *fs_type, > char *mnt_path, size_t len) > { > +#ifdef __KLIBC__ > + safestrcpymax(mnt_path, "/sys", len); > + return 0; > +#else > FILE *mnt; > struct mntent *mntent; > int ret = 0; > @@ -99,6 +103,7 @@ > ret = -1; > > return ret; > +#endif Can't we just define that sysfs should be mounted on /sys, and be done with it? It sounds like the kind of things that one shouldn't bother parameterizing; in fact, relying on /proc/mounts or /etc/mtab is actually likely to be *LESS* sane than just assuming /sys. In other words, this is braindamage, fix it where it hurts. -hpa |