1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00
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> 2004-04-02 Jakub Jelinek <jakub@redhat.com>
* nis/nss: Add SERVICES_AUTHORITATIVE. * nis/nss: Add SERVICES_AUTHORITATIVE.

View File

@ -52,13 +52,13 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
int invallen, char *indata) int invallen, char *indata)
{ {
if (instatus != YP_TRUE) if (instatus != YP_TRUE)
return instatus; return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0) if (inkey && inkeylen > 0 && inval && invallen > 0)
{ {
struct response *newp = malloc (sizeof (struct response) + invallen + 1); struct response *newp = malloc (sizeof (struct response) + invallen + 1);
if (newp == NULL) 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) if (start == NULL)
start = newp; start = newp;

View File

@ -57,14 +57,14 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
intern_t *intern = (intern_t *) indata; intern_t *intern = (intern_t *) indata;
if (instatus != YP_TRUE) if (instatus != YP_TRUE)
return instatus; return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0) if (inkey && inkeylen > 0 && inval && invallen > 0)
{ {
struct response_t *newp = malloc (sizeof (struct response_t) struct response_t *newp = malloc (sizeof (struct response_t)
+ invallen + 1); + invallen + 1);
if (newp == NULL) 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) if (intern->start == NULL)
intern->start = newp; intern->start = newp;

View File

@ -49,13 +49,13 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
int invallen, char *indata) int invallen, char *indata)
{ {
if (instatus != YP_TRUE) if (instatus != YP_TRUE)
return instatus; return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0) if (inkey && inkeylen > 0 && inval && invallen > 0)
{ {
struct response *newp = malloc (sizeof (struct response) + invallen + 1); struct response *newp = malloc (sizeof (struct response) + invallen + 1);
if (newp == NULL) 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) if (start == NULL)
start = newp; start = newp;

View File

@ -57,14 +57,14 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
intern_t *intern = (intern_t *)indata; intern_t *intern = (intern_t *)indata;
if (instatus != YP_TRUE) if (instatus != YP_TRUE)
return instatus; return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0) if (inkey && inkeylen > 0 && inval && invallen > 0)
{ {
struct response_t *newp = malloc (sizeof (struct response_t) struct response_t *newp = malloc (sizeof (struct response_t)
+ invallen + 1); + invallen + 1);
if (newp == NULL) 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) if (intern->start == NULL)
intern->start = newp; intern->start = newp;

View File

@ -70,14 +70,14 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
intern_t *intern = (intern_t *) indata; intern_t *intern = (intern_t *) indata;
if (instatus != YP_TRUE) if (instatus != YP_TRUE)
return instatus; return 1;
if (inkey && inkeylen > 0 && inval && invallen > 0) if (inkey && inkeylen > 0 && inval && invallen > 0)
{ {
struct response_t *newp = malloc (sizeof (struct response_t) struct response_t *newp = malloc (sizeof (struct response_t)
+ invallen + 1); + invallen + 1);
if (newp == NULL) 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) if (intern->start == NULL)
intern->start = newp; intern->start = newp;

View File

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

View File

@ -1,5 +1,5 @@
/* Return information about the filesystem on which FD resides. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -18,31 +18,56 @@
02111-1307 USA. */ 02111-1307 USA. */
#include <errno.h> #include <errno.h>
#include <sys/statvfs.h>
#include <string.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. */ /* Return information about the filesystem on which FD resides. */
int int
__fstatvfs64 (int fd, struct statvfs64 *buf) __fstatvfs64 (int fd, struct statvfs64 *buf)
{ {
struct statvfs buf32; struct statfs64 fsbuf;
int res = __fstatfs64 (fd, &fsbuf);
if (fstatvfs (fd, &buf32) < 0) #ifndef __ASSUME_STATFS64
return -1; if (res < 0 && errno == ENOSYS)
{
struct statvfs buf32;
buf->f_bsize = buf32.f_bsize; res = fstatvfs (fd, &buf32);
buf->f_frsize = buf32.f_frsize; if (res == 0)
buf->f_blocks = buf32.f_blocks; {
buf->f_bfree = buf32.f_bfree; buf->f_bsize = buf32.f_bsize;
buf->f_bavail = buf32.f_bavail; buf->f_frsize = buf32.f_frsize;
buf->f_files = buf32.f_files; buf->f_blocks = buf32.f_blocks;
buf->f_ffree = buf32.f_ffree; buf->f_bfree = buf32.f_bfree;
buf->f_favail = buf32.f_favail; buf->f_bavail = buf32.f_bavail;
buf->f_fsid = buf32.f_fsid; buf->f_files = buf32.f_files;
buf->f_flag = buf32.f_flag; buf->f_ffree = buf32.f_ffree;
buf->f_namemax = buf32.f_namemax; buf->f_favail = buf32.f_favail;
memcpy (buf->__f_spare, buf32.__f_spare, sizeof (buf32.__f_spare)); 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) 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -31,9 +31,16 @@
#include "linux_fsinfo.h" #include "linux_fsinfo.h"
#ifndef STATFS
# define STATFS statfs
# define STATVFS statvfs
# define INTERNAL_STATVFS __internal_statvfs
#endif
void void
__internal_statvfs (const char *name, struct statvfs *buf, INTERNAL_STATVFS (const char *name, struct STATVFS *buf,
struct statfs *fsbuf, struct stat64 *st) struct STATFS *fsbuf, struct stat64 *st)
{ {
/* Now fill in the fields we have information for. */ /* Now fill in the fields we have information for. */
buf->f_bsize = fsbuf->f_bsize; 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. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -23,7 +23,10 @@
#include <stddef.h> #include <stddef.h>
#include <sysdep.h> #include <sysdep.h>
# if __ASSUME_STATFS64 == 0
int __no_statfs64 attribute_hidden; int __no_statfs64 attribute_hidden;
#endif
/* Return information about the filesystem on which FILE resides. */ /* Return information about the filesystem on which FILE resides. */
int int

View File

@ -1,5 +1,5 @@
/* Return information about the filesystem on which FILE resides. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -18,32 +18,57 @@
02111-1307 USA. */ 02111-1307 USA. */
#include <errno.h> #include <errno.h>
#include <sys/statvfs.h>
#include <stddef.h> #include <stddef.h>
#include <string.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. */ /* Return information about the filesystem on which FILE resides. */
int int
__statvfs64 (const char *file, struct statvfs64 *buf) __statvfs64 (const char *file, struct statvfs64 *buf)
{ {
struct statvfs buf32; struct statfs64 fsbuf;
int res = __statfs64 (file, &fsbuf);
if (statvfs (file, &buf32) < 0) #ifndef __ASSUME_STATFS64
return -1; if (res < 0 && errno == ENOSYS)
{
struct statvfs buf32;
buf->f_bsize = buf32.f_bsize; res = statvfs (file, &buf32);
buf->f_frsize = buf32.f_frsize; if (res == 0)
buf->f_blocks = buf32.f_blocks; {
buf->f_bfree = buf32.f_bfree; buf->f_bsize = buf32.f_bsize;
buf->f_bavail = buf32.f_bavail; buf->f_frsize = buf32.f_frsize;
buf->f_files = buf32.f_files; buf->f_blocks = buf32.f_blocks;
buf->f_ffree = buf32.f_ffree; buf->f_bfree = buf32.f_bfree;
buf->f_favail = buf32.f_favail; buf->f_bavail = buf32.f_bavail;
buf->f_fsid = buf32.f_fsid; buf->f_files = buf32.f_files;
buf->f_flag = buf32.f_flag; buf->f_ffree = buf32.f_ffree;
buf->f_namemax = buf32.f_namemax; buf->f_favail = buf32.f_favail;
memcpy (buf->__f_spare, buf32.__f_spare, sizeof (buf32.__f_spare)); 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) weak_alias (__statvfs64, statvfs64)