2004-04-02  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/internal_statvfs64.c: New file.
	* sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):
	Add internal_statvfs64.
	* sysdeps/unix/sysv/linux/internal_statvfs.c: Allow to be used to
	compile 64bit version.
	* sysdeps/unix/sysv/linux/statvfs64.c: Use __fstatfs64 and skip
	compatibility code if __ASSUME_STATFS64 is defined.
	* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.

	* sysdeps/unix/sysv/linux/statfs64.c: Don't add __no_statfs64 if
	__ASSUME_STATFS64 != 0.

2004-04-02  Thorsten Kukuk  <kukuk@firun.suse.de>

	* nis/nss_nis/nis-ethers.c (saveit): Fix return codes in error case.
	* nis/nss_nis/nis-initgroups.c (saveit): Likewise.
	* nis/nss_nis/nis-proto.c (saveit): Likewise.
	* nis/nss_nis/nis-rpc.c (saveit): Likewise.
	* nis/nss_nis/nis-service.c (saveit): Likewise.
This commit is contained in:
Ulrich Drepper 2004-04-03 07:50:20 +00:00
parent 4eb6619c70
commit 08c9a553c7
12 changed files with 137 additions and 51 deletions

View File

@ -1,3 +1,25 @@
2004-04-02 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/internal_statvfs64.c: New file.
* sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):
Add internal_statvfs64.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Allow to be used to
compile 64bit version.
* sysdeps/unix/sysv/linux/statvfs64.c: Use __fstatfs64 and skip
compatibility code if __ASSUME_STATFS64 is defined.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statfs64.c: Don't add __no_statfs64 if
__ASSUME_STATFS64 != 0.
2004-04-02 Thorsten Kukuk <kukuk@firun.suse.de>
* nis/nss_nis/nis-ethers.c (saveit): Fix return codes in error case.
* nis/nss_nis/nis-initgroups.c (saveit): Likewise.
* nis/nss_nis/nis-proto.c (saveit): Likewise.
* nis/nss_nis/nis-rpc.c (saveit): Likewise.
* nis/nss_nis/nis-service.c (saveit): Likewise.
2004-04-02 Jakub Jelinek <jakub@redhat.com>
* nis/nss: Add SERVICES_AUTHORITATIVE.

View File

@ -52,13 +52,13 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
int invallen, char *indata)
{
if (instatus != YP_TRUE)
return instatus;
return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0)
{
struct response *newp = malloc (sizeof (struct response) + invallen + 1);
if (newp == NULL)
return YP_FALSE; /* We have no error code for out of memory */
return 1; /* We have no error code for out of memory */
if (start == NULL)
start = newp;

View File

@ -57,14 +57,14 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
intern_t *intern = (intern_t *) indata;
if (instatus != YP_TRUE)
return instatus;
return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0)
{
struct response_t *newp = malloc (sizeof (struct response_t)
+ invallen + 1);
if (newp == NULL)
return YP_FALSE; /* We have no error code for out of memory */
return 1; /* We have no error code for out of memory */
if (intern->start == NULL)
intern->start = newp;

View File

@ -49,13 +49,13 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
int invallen, char *indata)
{
if (instatus != YP_TRUE)
return instatus;
return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0)
{
struct response *newp = malloc (sizeof (struct response) + invallen + 1);
if (newp == NULL)
return YP_FALSE; /* We have no error code for out of memory */
return 1; /* We have no error code for out of memory */
if (start == NULL)
start = newp;

View File

@ -57,14 +57,14 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
intern_t *intern = (intern_t *)indata;
if (instatus != YP_TRUE)
return instatus;
return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0)
{
struct response_t *newp = malloc (sizeof (struct response_t)
+ invallen + 1);
if (newp == NULL)
return YP_FALSE; /* We have no error code for out of memory */
return 1; /* We have no error code for out of memory */
if (intern->start == NULL)
intern->start = newp;

View File

@ -70,14 +70,14 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
intern_t *intern = (intern_t *) indata;
if (instatus != YP_TRUE)
return instatus;
return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0)
{
struct response_t *newp = malloc (sizeof (struct response_t)
+ invallen + 1);
if (newp == NULL)
return YP_FALSE; /* We have no error code for out of memory */
return 1; /* We have no error code for out of memory */
if (intern->start == NULL)
intern->start = newp;

View File

@ -137,7 +137,7 @@ CFLAGS-ypclnt.c = -DUSE_BINDINGDIR=1
endif
ifeq ($(subdir),io)
sysdep_routines += xstatconv internal_statvfs
sysdep_routines += xstatconv internal_statvfs internal_statvfs64
endif
ifeq ($(subdir),elf)

View File

@ -1,5 +1,5 @@
/* Return information about the filesystem on which FD resides.
Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
Copyright (C) 1996,1997,1998,2000,2001,2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -18,31 +18,56 @@
02111-1307 USA. */
#include <errno.h>
#include <sys/statvfs.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/statfs.h>
#include <sys/statvfs.h>
#include "kernel-features.h"
extern void __internal_statvfs64 (const char *name, struct statvfs64 *buf,
struct statfs64 *fsbuf, struct stat64 *st);
/* Return information about the filesystem on which FD resides. */
int
__fstatvfs64 (int fd, struct statvfs64 *buf)
{
struct statvfs buf32;
struct statfs64 fsbuf;
int res = __fstatfs64 (fd, &fsbuf);
if (fstatvfs (fd, &buf32) < 0)
return -1;
#ifndef __ASSUME_STATFS64
if (res < 0 && errno == ENOSYS)
{
struct statvfs buf32;
buf->f_bsize = buf32.f_bsize;
buf->f_frsize = buf32.f_frsize;
buf->f_blocks = buf32.f_blocks;
buf->f_bfree = buf32.f_bfree;
buf->f_bavail = buf32.f_bavail;
buf->f_files = buf32.f_files;
buf->f_ffree = buf32.f_ffree;
buf->f_favail = buf32.f_favail;
buf->f_fsid = buf32.f_fsid;
buf->f_flag = buf32.f_flag;
buf->f_namemax = buf32.f_namemax;
memcpy (buf->__f_spare, buf32.__f_spare, sizeof (buf32.__f_spare));
res = fstatvfs (fd, &buf32);
if (res == 0)
{
buf->f_bsize = buf32.f_bsize;
buf->f_frsize = buf32.f_frsize;
buf->f_blocks = buf32.f_blocks;
buf->f_bfree = buf32.f_bfree;
buf->f_bavail = buf32.f_bavail;
buf->f_files = buf32.f_files;
buf->f_ffree = buf32.f_ffree;
buf->f_favail = buf32.f_favail;
buf->f_fsid = buf32.f_fsid;
buf->f_flag = buf32.f_flag;
buf->f_namemax = buf32.f_namemax;
memcpy (buf->__f_spare, buf32.__f_spare, sizeof (buf32.__f_spare));
}
}
#endif
return 0;
if (res == 0)
{
/* Convert the result. */
struct stat64 st;
__internal_statvfs64 (NULL, buf, &fsbuf,
fstat64 (fd, &st) == -1 ? NULL : &st);
}
return res;
}
weak_alias (__fstatvfs64, fstatvfs64)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
/* Copyright (C) 1998-2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -31,9 +31,16 @@
#include "linux_fsinfo.h"
#ifndef STATFS
# define STATFS statfs
# define STATVFS statvfs
# define INTERNAL_STATVFS __internal_statvfs
#endif
void
__internal_statvfs (const char *name, struct statvfs *buf,
struct statfs *fsbuf, struct stat64 *st)
INTERNAL_STATVFS (const char *name, struct STATVFS *buf,
struct STATFS *fsbuf, struct stat64 *st)
{
/* Now fill in the fields we have information for. */
buf->f_bsize = fsbuf->f_bsize;

View File

@ -0,0 +1,4 @@
#define STATFS statfs64
#define STATVFS statvfs64
#define INTERNAL_STATVFS __internal_statvfs64
#include "internal_statvfs.c"

View File

@ -1,5 +1,5 @@
/* Return information about the filesystem on which FILE resides.
Copyright (C) 1996,1997,1998,1999,2000,2003 Free Software Foundation, Inc.
Copyright (C) 1996-2000,2003,2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -23,7 +23,10 @@
#include <stddef.h>
#include <sysdep.h>
# if __ASSUME_STATFS64 == 0
int __no_statfs64 attribute_hidden;
#endif
/* Return information about the filesystem on which FILE resides. */
int

View File

@ -1,5 +1,5 @@
/* Return information about the filesystem on which FILE resides.
Copyright (C) 1998, 2000, 2001 Free Software Foundation, Inc.
Copyright (C) 1998, 2000, 2001, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -18,32 +18,57 @@
02111-1307 USA. */
#include <errno.h>
#include <sys/statvfs.h>
#include <stddef.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/statfs.h>
#include <sys/statvfs.h>
#include "kernel-features.h"
extern void __internal_statvfs64 (const char *name, struct statvfs64 *buf,
struct statfs64 *fsbuf, struct stat64 *st);
/* Return information about the filesystem on which FILE resides. */
int
__statvfs64 (const char *file, struct statvfs64 *buf)
{
struct statvfs buf32;
struct statfs64 fsbuf;
int res = __statfs64 (file, &fsbuf);
if (statvfs (file, &buf32) < 0)
return -1;
#ifndef __ASSUME_STATFS64
if (res < 0 && errno == ENOSYS)
{
struct statvfs buf32;
buf->f_bsize = buf32.f_bsize;
buf->f_frsize = buf32.f_frsize;
buf->f_blocks = buf32.f_blocks;
buf->f_bfree = buf32.f_bfree;
buf->f_bavail = buf32.f_bavail;
buf->f_files = buf32.f_files;
buf->f_ffree = buf32.f_ffree;
buf->f_favail = buf32.f_favail;
buf->f_fsid = buf32.f_fsid;
buf->f_flag = buf32.f_flag;
buf->f_namemax = buf32.f_namemax;
memcpy (buf->__f_spare, buf32.__f_spare, sizeof (buf32.__f_spare));
res = statvfs (file, &buf32);
if (res == 0)
{
buf->f_bsize = buf32.f_bsize;
buf->f_frsize = buf32.f_frsize;
buf->f_blocks = buf32.f_blocks;
buf->f_bfree = buf32.f_bfree;
buf->f_bavail = buf32.f_bavail;
buf->f_files = buf32.f_files;
buf->f_ffree = buf32.f_ffree;
buf->f_favail = buf32.f_favail;
buf->f_fsid = buf32.f_fsid;
buf->f_flag = buf32.f_flag;
buf->f_namemax = buf32.f_namemax;
memcpy (buf->__f_spare, buf32.__f_spare, sizeof (buf32.__f_spare));
}
}
#endif
return 0;
if (res == 0)
{
/* Convert the result. */
struct stat64 st;
__internal_statvfs64 (file, buf, &fsbuf,
stat64 (file, &st) == -1 ? NULL : &st);
}
return res;
}
weak_alias (__statvfs64, statvfs64)