58#define FPARSELN_UNESCESC 0x01
59#define FPARSELN_UNESCCONT 0x02
60#define FPARSELN_UNESCCOMM 0x04
61#define FPARSELN_UNESCREST 0x08
62#define FPARSELN_UNESCALL 0x0f
67#define LITE_FOPT_RSYNC_DELETE 0x01
68#define LITE_FOPT_COPYFILE_SYM 0x01
69#define LITE_FOPT_KEEP_MTIME 0x02
71typedef struct lfile lfile_t;
74char *
chomp (
char *str);
76int erasef (
const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
78char *
fparseln (FILE *,
size_t *,
size_t *, const
char[3],
int);
80int fexist (const
char *file);
81int fexistf (const
char *fmt, ...) __attribute__ ((format (printf, 1, 2)));;
82int fisdir (const
char *path);
84FILE *
vfopenf (const
char *mode, const
char *fmt, va_list ap);
85FILE *
fopenf (const
char *mode, const
char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
86int fremove (const
char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
88ssize_t
copyfile (const
char *src, const
char *dst,
int len,
int opt);
89int movefile (const
char *src, const
char *dst);
91ssize_t
fsendfile (FILE *src, FILE *dst,
size_t len);
92int truncatef (off_t length, const
char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
94char *
vreadsnf (
char *line,
size_t len, const
char *fmt, va_list ap);
95char *
readsnf (
char *line,
size_t len, const
char *fmt, ...);
96int writesf (const
char *str, const
char *mode, const
char *fmt, ...);
98int vreadllf (
long long *value, const
char *fmt, va_list ap);
99int readllf (
long long *value, const
char *fmt, ...);
100int readdf (
int *value, const
char *fmt, ...);
101int writellf (
long long value, const
char *mode, const
char *fmt, ...);
102int writedf (
int value, const
char *mode, const
char *fmt, ...);
104int ifconfig (const
char *ifname, const
char *addr, const
char *mask,
int up);
106lfile_t*
lfopen (const
char *file, const
char *sep);
108char *
lftok (lfile_t *lf);
109char *
lfgetkey (lfile_t *lf, const
char *key);
110int lfgetint (lfile_t *lf, const
char *key);
111int fgetint (const
char *file, const
char *sep, const
char *key);
113int fmkpath (mode_t mode, const
char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
114int mkpath (const
char *
dir, mode_t mode);
117int dir (const
char *
dir, const
char *type,
int (*filter) (const
char *file),
char ***list,
int strip);
118int rsync (
char *src,
char *dst,
int opt,
int (*filter) (const
char *file));
120FILE *popenf (const
char *type, const
char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
122int pidfile (const
char *basename);
127void *
reallocarray(
void *optr,
size_t nmemb,
size_t size);
129void progress (
int percent,
int max_width);
132int runbg (
char *const cmd[],
int delay);
133int systemf (const
char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
138int telnet_session (
int addr,
short port,
char *script[], FILE *output);
140int touchf (const
char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
142int yorn (const
char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
144char *
which (const
char *cmd);
145int whichp (const
char *cmd);
156static inline int touch(
const char *path)
160 if (utimensat(AT_FDCWD, path, NULL, 0)) {
163 fd = creat(path, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
178static inline int makedir(
const char *path, mode_t mode)
180 if (mkdir(path, mode) && errno != EEXIST)
192static inline int makefifo(
const char *path, mode_t mode)
194 if (mkfifo(path, mode) && errno != EEXIST)
206static inline int erase(
const char *path)
208 if (remove(path) && errno != ENOENT)
215# define chardev(x,m,maj,min) mknod((x), S_IFCHR|(m), makedev((maj),(min)))
218# define blkdev(x,m,maj,min) mknod((x), S_IFBLK|(m), makedev((maj),(min)))
222# define S_ISEXEC(m) (((m) & S_IXUSR) == S_IXUSR)
227#define ISCLR(word,bit) ((word & (1 << (bit)) ? 0 : 1))
230#define ISSET(word,bit) ((word & (1 << (bit)) ? 1 : 0))
233#define ISOTHER(word,bit) ((word & ~(1 << (bit)) ? 1 : 0))
236#define SETBIT(word,bit) (word |= (1 << (bit)))
239#define CLRBIT(word,bit) (word &= ~(1 << (bit)))
244#define NELEMS(array) (sizeof(array) / sizeof(array[0]))
253static inline int fisslashdir(
const char *
dir)
259 return dir[strlen(
dir) - 1] ==
'/';
265#define copy_filep(src, dst) fcopyfile(src, dst)
266#define pidfile_read_pid(file) pidfile_read(file)
267#define signal_pidfile(file, signo) pidfile_signal(file, signo)
int movefile(const char *src, const char *dst)
int fcopyfile(FILE *src, FILE *dst)
ssize_t copyfile(const char *src, const char *dst, int len, int opt)
int dir(const char *dir, const char *type, int(*filter)(const char *file), char ***list, int strip)
int erasef(const char *fmt,...)
int fexistf(const char *fmt,...)
int fexist(const char *file)
int fisdir(const char *path)
FILE * fopenf(const char *mode, const char *fmt,...)
FILE * vfopenf(const char *mode, const char *fmt, va_list ap)
char * fparseln(FILE *fp, size_t *size, size_t *lineno, const char str[3], int flags)
int fremove(const char *fmt,...)
ssize_t fsendfile(FILE *src, FILE *dst, size_t len)
int ifconfig(const char *ifname, const char *addr, const char *mask, int up)
char * lftok(lfile_t *lf)
int lfgetint(lfile_t *lf, const char *key)
void lfclose(lfile_t *lf)
lfile_t * lfopen(const char *file, const char *sep)
int fgetint(const char *file, const char *sep, const char *key)
char * lfgetkey(lfile_t *lf, const char *key)
int telnet_session(int addr, short port, char *script[], FILE *output)
FILE int pidfile(const char *basename)
int telnet_expect(sdbuf_t *ctx, char *script[], FILE *output)
pid_t pidfile_poll(const char *pidfile)
FILE int FILE * tempfile(void)
void progress(int percent, int max_width)
int int char * which(const char *cmd)
void progress_simple(int percent)
int char * vreadsnf(char *line, size_t len, const char *fmt, va_list ap)
int writesf(const char *str, const char *mode, const char *fmt,...)
int pidfile_signal(const char *pidfile, int signal)
int sdbuf_t * telnet_open(int addr, short port)
int whichp(const char *cmd)
int readdf(int *value, const char *fmt,...)
int readllf(long long *value, const char *fmt,...)
pid_t pidfile_read(const char *pidfile)
char * readsnf(char *line, size_t len, const char *fmt,...)
int writellf(long long value, const char *mode, const char *fmt,...)
int telnet_close(sdbuf_t *ctx)
int makepath(const char *dir)
void * reallocarray(void *optr, size_t nmemb, size_t size)
int int mkpath(const char *dir, mode_t mode)
int writedf(int value, const char *mode, const char *fmt,...)
int rsync(char *src, char *dst, int opt, int(*filter)(const char *file))
int runbg(char *const cmd[], int delay)
int vreadllf(long long *value, const char *fmt, va_list ap)