⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system.h

📁 Linux下文件工具。
💻 H
字号:
/* system-dependent definitions for fileutils, textutils, and sh-utils packages.   Copyright (C) 1989, 1991-2002 Free Software Foundation, Inc.   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2, or (at your option)   any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software Foundation,   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  *//* Include sys/types.h before this file.  */#if 2 <= __GLIBC__ && 2 <= __GLIBC_MINOR__# if ! defined _SYS_TYPES_Hyou must include <sys/types.h> before including this file# endif#endif#include <sys/stat.h>#if !defined HAVE_MKFIFO# define mkfifo(path, mode) (mknod ((path), (mode) | S_IFIFO, 0))#endif#if HAVE_SYS_PARAM_H# include <sys/param.h>#endif/* <unistd.h> should be included before any preprocessor test   of _POSIX_VERSION.  */#if HAVE_UNISTD_H# include <unistd.h>#endif#ifndef STDIN_FILENO# define STDIN_FILENO 0#endif#ifndef STDOUT_FILENO# define STDOUT_FILENO 1#endif#ifndef STDERR_FILENO# define STDERR_FILENO 2#endif#if HAVE_LIMITS_H/* limits.h must come before pathmax.h because limits.h on some systems   undefs PATH_MAX, whereas pathmax.h sets PATH_MAX.  */# include <limits.h>#endif#include "pathmax.h"#if TIME_WITH_SYS_TIME# include <sys/time.h># include <time.h>#else# if HAVE_SYS_TIME_H#  include <sys/time.h># else#  include <time.h># endif#endif/* Since major is a function on SVR4, we can't use `ifndef major'.  */#if MAJOR_IN_MKDEV# include <sys/mkdev.h># define HAVE_MAJOR#endif#if MAJOR_IN_SYSMACROS# include <sys/sysmacros.h># define HAVE_MAJOR#endif#ifdef major			/* Might be defined in sys/types.h.  */# define HAVE_MAJOR#endif#ifndef HAVE_MAJOR# define major(dev)  (((dev) >> 8) & 0xff)# define minor(dev)  ((dev) & 0xff)# define makedev(maj, min)  (((maj) << 8) | (min))#endif#undef HAVE_MAJOR#if HAVE_UTIME_H# include <utime.h>#endif/* Some systems (even some that do have <utime.h>) don't declare this   structure anywhere.  */#ifndef HAVE_STRUCT_UTIMBUFstruct utimbuf{  long actime;  long modtime;};#endif/* Don't use bcopy!  Use memmove if source and destination may overlap,   memcpy otherwise.  */#if HAVE_STRING_H# if !STDC_HEADERS && HAVE_MEMORY_H#  include <memory.h># endif# include <string.h>#else# include <strings.h>#endif#include <errno.h>#ifndef errnoextern int errno;#endif#if HAVE_STDBOOL_H# include <stdbool.h>#elsetypedef enum {false = 0, true = 1} bool;#endif#if HAVE_STDLIB_H# define getopt system_getopt# include <stdlib.h># undef getopt#endif/* The following test is to work around the gross typo in   systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE   is defined to 0, not 1.  */#if !EXIT_FAILURE# undef EXIT_FAILURE# define EXIT_FAILURE 1#endif#ifndef EXIT_SUCCESS# define EXIT_SUCCESS 0#endif#if HAVE_FCNTL_H# include <fcntl.h>#else# include <sys/file.h>#endif#if !defined SEEK_SET# define SEEK_SET 0# define SEEK_CUR 1# define SEEK_END 2#endif#ifndef F_OK# define F_OK 0# define X_OK 1# define W_OK 2# define R_OK 4#endif/* For systems that distinguish between text and binary I/O.   O_BINARY is usually declared in fcntl.h  */#if !defined O_BINARY && defined _O_BINARY  /* For MSC-compatible compilers.  */# define O_BINARY _O_BINARY# define O_TEXT _O_TEXT#endif#ifdef __BEOS__  /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect.  */# undef O_BINARY# undef O_TEXT#endif#if O_BINARY# ifndef __DJGPP__#  define setmode _setmode#  define fileno(_fp) _fileno (_fp)# endif /* not DJGPP */# define SET_MODE(_f, _m) setmode (_f, _m)# define SET_BINARY(_f) do {if (!isatty(_f)) setmode (_f, O_BINARY);} while (0)# define SET_BINARY2(_f1, _f2)		\  do {					\    if (!isatty (_f1))			\      {					\        setmode (_f1, O_BINARY);	\	if (!isatty (_f2))		\	  setmode (_f2, O_BINARY);	\      }					\  } while(0)#else# define SET_MODE(_f, _m) (void)0# define SET_BINARY(f) (void)0# define SET_BINARY2(f1,f2) (void)0# define O_BINARY 0# define O_TEXT 0#endif /* O_BINARY */#if HAVE_DIRENT_H# include <dirent.h># define NLENGTH(direct) (strlen((direct)->d_name))#else /* not HAVE_DIRENT_H */# define dirent direct# define NLENGTH(direct) ((direct)->d_namlen)# if HAVE_SYS_NDIR_H#  include <sys/ndir.h># endif /* HAVE_SYS_NDIR_H */# if HAVE_SYS_DIR_H#  include <sys/dir.h># endif /* HAVE_SYS_DIR_H */# if HAVE_NDIR_H#  include <ndir.h># endif /* HAVE_NDIR_H */#endif /* HAVE_DIRENT_H */#if CLOSEDIR_VOID/* Fake a return value. */# define CLOSEDIR(d) (closedir (d), 0)#else# define CLOSEDIR(d) closedir (d)#endif/* Get or fake the disk device blocksize.   Usually defined by sys/param.h (if at all).  */#if !defined DEV_BSIZE && defined BSIZE# define DEV_BSIZE BSIZE#endif#if !defined DEV_BSIZE && defined BBSIZE /* SGI */# define DEV_BSIZE BBSIZE#endif#ifndef DEV_BSIZE# define DEV_BSIZE 4096#endif/* Extract or fake data from a `struct stat'.   ST_BLKSIZE: Preferred I/O blocksize for the file, in bytes.   ST_NBLOCKS: Number of blocks in the file, including indirect blocks.   ST_NBLOCKSIZE: Size of blocks used when calculating ST_NBLOCKS.  */#ifndef HAVE_STRUCT_STAT_ST_BLOCKS# define ST_BLKSIZE(statbuf) DEV_BSIZE# if defined _POSIX_SOURCE || !defined BSIZE /* fileblocks.c uses BSIZE.  */#  define ST_NBLOCKS(statbuf) \  (S_ISREG ((statbuf).st_mode) \   || S_ISDIR ((statbuf).st_mode) \   ? (statbuf).st_size / ST_NBLOCKSIZE + ((statbuf).st_size % ST_NBLOCKSIZE != 0) : 0)# else /* !_POSIX_SOURCE && BSIZE */#  define ST_NBLOCKS(statbuf) \  (S_ISREG ((statbuf).st_mode) \   || S_ISDIR ((statbuf).st_mode) \   ? st_blocks ((statbuf).st_size) : 0)# endif /* !_POSIX_SOURCE && BSIZE */#else /* HAVE_STRUCT_STAT_ST_BLOCKS *//* Some systems, like Sequents, return st_blksize of 0 on pipes. */# define ST_BLKSIZE(statbuf) ((statbuf).st_blksize > 0 \			       ? (statbuf).st_blksize : DEV_BSIZE)# if defined hpux || defined __hpux__ || defined __hpux/* HP-UX counts st_blocks in 1024-byte units.   This loses when mixing HP-UX and BSD filesystems with NFS.  */#  define ST_NBLOCKSIZE 1024# else /* !hpux */#  if defined _AIX && defined _I386/* AIX PS/2 counts st_blocks in 4K units.  */#   define ST_NBLOCKSIZE (4 * 1024)#  else /* not AIX PS/2 */#   if defined _CRAY#    define ST_NBLOCKS(statbuf) \  (S_ISREG ((statbuf).st_mode) \   || S_ISDIR ((statbuf).st_mode) \   ? (statbuf).st_blocks * ST_BLKSIZE(statbuf)/ST_NBLOCKSIZE : 0)#   endif /* _CRAY */#  endif /* not AIX PS/2 */# endif /* !hpux */#endif /* HAVE_STRUCT_STAT_ST_BLOCKS */#ifndef ST_NBLOCKS# define ST_NBLOCKS(statbuf) \  (S_ISREG ((statbuf).st_mode) \   || S_ISDIR ((statbuf).st_mode) \   ? (statbuf).st_blocks : 0)#endif#ifndef ST_NBLOCKSIZE# define ST_NBLOCKSIZE 512#endif#include "sys2.h"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -