📄 file.h
字号:
/*
* file.h,v 1.3 2000/06/04 22:00:03 brunsch Exp
*
* Copyright (c) 1994, 1995. Netscape Communications Corporation. All
* rights reserved.
*
* Use of this software is governed by the terms of the license agreement for
* the Netscape Communications or Netscape Comemrce Server between the
* parties.
*/
/* ------------------------------------------------------------------------ */
/*
* file.h: system specific functions for reading/writing files
*
* Rob McCool
*/
#ifndef FILE_H
#define FILE_H
#ifdef XP_WIN32
#include <nt/ntfile.h>
#else
#include "netsite.h"
#include "systems.h"
/*
* I cheat: These are set up such that system_read can be a macro for read
* under UNIX. IO_OKAY is anything positive.
*/
#define IO_OKAY 1
#define IO_ERROR -1
#define IO_EOF 0
#ifdef FILE_STDIO
#include <stdio.h>
#elif defined(FILE_UNIX)
#include <sys/types.h>
#include <sys/file.h>
#include <fcntl.h>
#include <unistd.h>
#endif
/* -------------------------- File related defs --------------------------- */
/* The disk page size on this machine. */
#define FILE_BUFFERSIZE 4096
/*
* The fd data type for this system.
*/
#if defined(FILE_STDIO)
typedef FILE* SYS_FILE;
#define SYS_ERROR_FD NULL
#define SYS_STDERR stderr
#elif defined(FILE_UNIX)
typedef int SYS_FILE;
#define SYS_ERROR_FD -1
#define SYS_STDERR STDERR_FILENO
#else
#error "undefined file typing for current system"
#endif
#ifdef XP_UNIX
#define FILE_PATHSEP '/'
#define FILE_PARENT "../"
#define system_chdir chdir
#endif
/*
* system_fread reads sz bytes from fd into to buf, return number of bytes
* read, or IO_EOF if EOF, or IO_ERROR if error.
*/
#if defined(FILE_STDIO)
int system_fread(SYS_FILE fd, char *buf, int sz);
#elif defined(FILE_UNIX)
#define system_fread(fd,buf,sz) read(fd,buf,sz)
#endif
/*
* system_fopenRO opens a given file for reading only
* system_fopenWA opens a given file for writing, appending new output
*/
#if defined(FILE_STDIO)
#define system_fopenRO(path) fopen(path,"r")
#define system_fopenWA(path) fopen(path,"a")
#define system_fopenRW(path) fopen(path,"w")
#elif defined(FILE_UNIX)
#define system_fopenRO(path) open(path, O_RDONLY)
#define system_fopenWA(path) \
open(path, O_RDWR | O_CREAT | O_APPEND, 0644)
#define system_fopenRW(path) \
open(path, O_RDWR | O_CREAT, 0644)
#endif
/*
* system_fclose closes the file fd
*/
#if defined(FILE_STDIO)
#define system_fclose(fd) fclose(fd)
#elif defined(FILE_UNIX)
#define system_fclose(fd) close(fd)
#endif
/*
* This call stops core dumps in a portable way. Returns -1 on error.
*/
int system_nocoredumps(void);
#if defined(FILE_STDIO)
#define system_lseek fseek
#elif defined(FILE_UNIX)
#define system_lseek lseek
#endif
/*
* system_write writes sz bytes from buf to fd. The handler function should
* handle partial writes and anything else like that. Returns IO_*
*/
int system_fwrite(SYS_FILE fd,char *buf,int sz);
/*
* system_fwrite_atomic locks the given fd before writing to it. This avoids
* interference between simultaneous writes. Returns IO_*
*/
int system_fwrite_atomic(SYS_FILE fd, char *buf, int sz);
/*
* system_errmsg returns the last error that occured while processing file
* descriptor fd. fd does not have to be specified (if the error is a global
* such as in UNIX systems). PPS: Rob is a halfwit. This parameter is useless.
*/
#ifndef FILE_WIN32
#include <errno.h>
extern char *sys_errlist[];
#define file_notfound() (errno == ENOENT)
#define system_errmsg(fd) (sys_errlist[errno])
#endif
/*
* flock locks a file against interference from other processes
* ulock unlocks it.
*/
#ifdef BSD_FLOCK
#include <sys/file.h>
#define system_initlock(fd) (0)
#define system_flock(fd) flock(fd, LOCK_EX)
#define system_ulock(fd) flock(fd, LOCK_UN)
#elif defined(FILE_UNIX)
#include <unistd.h>
#define system_initlock(fd) (0)
#define system_flock(fd) lockf(fd, F_LOCK, 0)
#define system_ulock(fd) lockf(fd, F_ULOCK, 0)
#endif
/*
* unix2local converts a unix-style pathname to a local one
*/
#ifdef XP_UNIX
#define file_unix2local(path,p2) strcpy(p2,path)
#endif
/* -------------------------- Dir related defs ---------------------------- */
#ifdef XP_UNIX
#include <dirent.h>
typedef DIR* SYS_DIR;
typedef struct dirent SYS_DIRENT;
#define dir_open opendir
#define dir_read readdir
#define dir_close closedir
#endif
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -