1 /* @(#)starsubs.h 1.144 20/07/19 Copyright 1996-2020 J. Schilling */ 2 /* 3 * Prototypes for star subroutines 4 * 5 * Copyright (c) 1996-2020 J. Schilling 6 */ 7 /* 8 * The contents of this file are subject to the terms of the 9 * Common Development and Distribution License, Version 1.0 only 10 * (the "License"). You may not use this file except in compliance 11 * with the License. 12 * 13 * See the file CDDL.Schily.txt in this distribution for details. 14 * A copy of the CDDL is also available via the Internet at 15 * http://www.opensource.org/licenses/cddl1.txt 16 * 17 * When distributing Covered Code, include this CDDL HEADER in each 18 * file and include the License file CDDL.Schily.txt from this distribution. 19 */ 20 21 #include <schily/ccomdefs.h> 22 23 #ifndef _SCHILY_UTYPES_H 24 #include <schily/utypes.h> 25 #endif 26 27 #ifndef _SCHILY_TYPES_H 28 #include <schily/types.h> 29 #endif 30 31 /* 32 * star.c 33 */ 34 extern int main __PR((int ac, char **av)); 35 extern int getnum __PR((char *arg, long *valp)); 36 extern int getbnum __PR((char *arg, Llong *valp)); 37 extern int getknum __PR((char *arg, Llong *valp)); 38 extern void set_signal __PR((int sig, RETSIGTYPE (*handler)(int))); 39 extern void copy_create __PR((int ac, char *const *av)); 40 extern void star_verifyopts __PR((void)); 41 #ifdef EOF 42 extern BOOL ttyerr __PR((FILE *f)); 43 #endif 44 45 /* 46 * chdir.c 47 */ 48 extern char *dogetwdir __PR((BOOL doexit)); 49 extern BOOL dochdir __PR((const char *dir, BOOL doexit)); 50 51 /* 52 * match.c 53 */ 54 extern const char *filename __PR((const char *name)); 55 extern BOOL match __PR((const char *name)); 56 extern int addpattern __PR((const char *pattern)); 57 extern int addarg __PR((const char *pattern)); 58 extern void closepattern __PR((void)); 59 extern void prpatstats __PR((void)); 60 61 /* 62 * buffer.c 63 */ 64 extern void opt_remote __PR((void)); 65 extern BOOL openremote __PR((void)); 66 extern void opentape __PR((void)); 67 extern void closetape __PR((void)); 68 extern void changetape __PR((BOOL donext)); 69 extern void runnewvolscript __PR((int volno, int nindex)); 70 extern void nextitape __PR((void)); 71 extern void nextotape __PR((void)); 72 extern long startvol __PR((char *buf, long amount)); 73 extern void newvolhdr __PR((char *buf, long amount, BOOL do_fifo)); 74 extern void initbuf __PR((int nblocks)); 75 extern void markeof __PR((void)); 76 extern void marktcb __PR((char *addr)); 77 extern void syncbuf __PR((void)); 78 extern long peekblock __PR((char *buf, long amount)); 79 extern long readblock __PR((char *buf, long amount)); 80 extern ssize_t readtape __PR((char *buf, size_t amount)); 81 #ifdef _STAR_H 82 extern void filltcb __PR((TCB *ptb)); 83 extern void movetcb __PR((TCB *from_ptb, TCB *to_ptb)); 84 #endif 85 extern void *get_block __PR((long amount)); 86 extern void put_block __PR((long amount)); 87 extern char *writeblock __PR((char *buf)); 88 extern ssize_t writetape __PR((char *buf, size_t amount)); 89 extern void writeempty __PR((void)); 90 extern void weof __PR((void)); 91 extern void buf_sync __PR((long size)); 92 extern void buf_drain __PR((void)); 93 extern long buf_wait __PR((long amount)); 94 extern void buf_wake __PR((long amount)); 95 extern long buf_rwait __PR((long amount)); 96 extern void buf_rwake __PR((long amount)); 97 extern void buf_resume __PR((void)); 98 extern void backtape __PR((void)); 99 extern int mtioctl __PR((int cmd, int count)); 100 extern off_t mtseek __PR((off_t offset, int whence)); 101 extern Llong tblocks __PR((void)); 102 extern void prstats __PR((void)); 103 extern BOOL checkerrs __PR((void)); 104 extern void exprstats __PR((int ret)); 105 extern void excomerrno __PR((int err, 106 char *fmt, ...)) __printflike__(2, 3); 107 extern void excomerr __PR((char *fmt, ...)) __printflike__(1, 2); 108 extern void die __PR((int err)); 109 110 /* 111 * append.c 112 */ 113 #ifdef _STAR_H 114 extern void skipall __PR((void)); 115 extern BOOL update_newer __PR((FINFO *info)); 116 #endif 117 118 /* 119 * create.c 120 */ 121 extern void checklinks __PR((void)); 122 extern ssize_t _fileread __PR((int *fp, void *buf, size_t len)); 123 extern void create __PR((char *name, BOOL Hflag, BOOL forceadd)); 124 #if defined(_SCHILY_WALK_H) 125 extern void createlist __PR((struct WALK *state)); 126 #endif 127 #ifdef _STAR_H 128 extern BOOL read_symlink __PR((char *sname, char *name, 129 FINFO *info, TCB *ptb)); 130 extern BOOL last_cpio_link __PR((FINFO *info)); 131 extern BOOL xcpio_link __PR((FINFO *info)); 132 extern void flushlinks __PR((void)); 133 extern BOOL read_link __PR((char *name, int namlen, FINFO *info, 134 TCB *ptb)); 135 #ifdef EOF 136 extern void put_file __PR((int *fp, FINFO *info)); 137 #endif 138 extern void cr_file __PR((FINFO *info, 139 ssize_t (*)(void *, char *, size_t), 140 void *arg, long amt, char *text)); 141 #endif 142 #if defined(_SCHILY_STAT_H) && defined(_SCHILY_WALK_H) 143 extern int walkfunc __PR((char *nm, struct stat *fs, 144 int type, struct WALK *state)); 145 #endif 146 147 /* 148 * diff.c 149 */ 150 extern void diff __PR((void)); 151 #ifdef EOF 152 extern void prdiffopts __PR((FILE *f, char *label, int flags)); 153 #endif 154 155 /* 156 * restore.c 157 */ 158 #ifdef _STAR_H 159 #ifdef _RESTORE_H 160 extern imap_t *padd_node __PR((char *name, ino_t oino, ino_t nino, 161 Int32_t flags)); 162 extern imap_t *sym_addrec __PR((FINFO *info)); 163 extern void sym_addstat __PR((FINFO *info, imap_t *imp)); 164 extern imap_t *sym_dirprepare __PR((FINFO *info, imap_t *idir)); 165 extern imap_t *sym_typecheck __PR((FINFO *info, FINFO *cinfo, imap_t *imp)); 166 #endif 167 #endif 168 extern void sym_initmaps __PR((void)); 169 extern void sym_open __PR((char *name)); 170 #ifdef _STAR_H 171 extern void sym_init __PR((GINFO *gp)); 172 #endif 173 extern void sym_close __PR((void)); 174 #ifdef EOF 175 extern void printLsym __PR((FILE *f)); 176 #endif 177 178 /* 179 * dirtime.c 180 */ 181 /* The prototype definitions have been moved into dirtime.h */ 182 183 /* 184 * extract.c 185 */ 186 #ifdef _STAR_H 187 extern void extract __PR((char *vhname)); 188 #ifdef _RESTORE_H 189 extern BOOL extracti __PR((FINFO *info, imap_t *imp)); 190 #endif 191 extern BOOL newer __PR((FINFO *info, FINFO *cinfo)); 192 extern BOOL same_symlink __PR((FINFO *info)); 193 extern BOOL same_special __PR((FINFO *info)); 194 extern BOOL create_dirs __PR((char *name)); 195 extern BOOL make_adir __PR((FINFO *info)); 196 extern BOOL void_file __PR((FINFO *info)); 197 extern int xt_file __PR((FINFO *info, 198 ssize_t (*)(void *, char *, size_t), 199 void *arg, long amt, char *text)); 200 extern void skip_slash __PR((FINFO *info)); 201 #endif 202 203 /* 204 * fifo.c 205 */ 206 #ifdef FIFO 207 extern void initfifo __PR((void)); 208 extern void fifo_ibs_shrink __PR((long newsize)); 209 extern void runfifo __PR((int ac, char *const *av)); 210 extern void fifo_prmp __PR((int sig)); 211 extern void fifo_stats __PR((void)); 212 extern size_t fifo_amount __PR((void)); 213 extern long fifo_iwait __PR((long amount)); 214 extern void fifo_owake __PR((long amount)); 215 extern void fifo_oflush __PR((void)); 216 extern void fifo_oclose __PR((void)); 217 extern long fifo_owait __PR((long amount)); 218 extern void fifo_iwake __PR((long amt)); 219 extern void fifo_reelwake __PR((void)); 220 extern void fifo_resume __PR((void)); 221 extern void fifo_sync __PR((long size)); 222 extern int fifo_errno __PR((void)); 223 extern void fifo_onexit __PR((int err, void *ignore)); 224 extern void fifo_exit __PR((int err)); 225 extern void fifo_chitape __PR((void)); 226 extern void fifo_chotape __PR((void)); 227 #endif 228 229 /* 230 * header.c 231 */ 232 #ifdef _STAR_H 233 extern BOOL tarsum_ok __PR((TCB *ptb)); 234 #ifdef EOF 235 extern void print_hdrtype __PR((FILE *f, int type)); 236 #endif 237 extern char *hdr_name __PR((int type)); 238 extern char *hdr_text __PR((int type)); 239 extern int hdr_type __PR((char *name)); 240 extern void hdr_usage __PR((void)); 241 extern int get_hdrtype __PR((TCB *ptb, BOOL isrecurse)); 242 extern int get_compression __PR((TCB *ptb)); 243 extern char *get_cmpname __PR((int type)); 244 extern int get_tcb __PR((TCB *ptb)); 245 extern void put_tcb __PR((TCB *ptb, FINFO *info)); 246 extern void write_tcb __PR((TCB *ptb, FINFO *info)); 247 extern void info_to_tcb __PR((register FINFO *info, register TCB *ptb)); 248 extern int tcb_to_info __PR((register TCB *ptb, register FINFO *info)); 249 extern void stolli __PR((register char *s, Ullong *ull)); 250 extern void llitos __PR((char *s, Ullong ull, int fieldw)); 251 extern void dump_info __PR((FINFO *info)); 252 #endif 253 254 /* 255 * volhdr.c 256 */ 257 #ifdef _STAR_H 258 extern void ginit __PR((void)); 259 extern void grinit __PR((void)); 260 extern void gipsetup __PR((GINFO *gp)); 261 extern void griprint __PR((GINFO *gp)); 262 extern BOOL verifyvol __PR((char *buf, int amt, int volno, 263 int *skipp)); 264 extern char *dt_name __PR((int type)); 265 extern int dt_type __PR((char *name)); 266 extern void put_release __PR((void)); 267 extern void put_archtype __PR((void)); 268 extern void put_volhdr __PR((char *name, BOOL putv)); 269 extern void put_svolhdr __PR((char *name)); 270 extern void put_multhdr __PR((off_t size, off_t off)); 271 extern BOOL get_volhdr __PR((FINFO *info, char *vhname)); 272 #endif 273 274 /* 275 * cpiohdr.c 276 */ 277 #ifdef _STAR_H 278 extern void put_cpioh __PR((TCB *ptb, FINFO *info)); 279 extern void cpioinfo_to_tcb __PR((FINFO *info, TCB *ptb)); 280 extern int cpiotcb_to_info __PR((TCB *ptb, FINFO *info)); 281 extern int cpio_checkswab __PR((TCB *ptb)); 282 #endif 283 extern void cpio_weof __PR((void)); 284 extern void cpio_resync __PR((void)); 285 286 /* 287 * xheader.c 288 */ 289 #ifdef _STAR_H 290 extern void xbinit __PR((void)); 291 extern void xbbackup __PR((void)); 292 extern void xbrestore __PR((void)); 293 extern size_t xhsize __PR((void)); 294 extern void info_to_xhdr __PR((FINFO *info, TCB *ptb)); 295 extern BOOL xhparse __PR((FINFO *info, char *p, char *ep)); 296 extern void xh_rangeerr __PR((char *keyword, char *arg, size_t len)); 297 extern void gen_xtime __PR((char *keyword, time_t sec, Ulong nsec)); 298 extern void gen_unumber __PR((char *keyword, Ullong arg)); 299 extern void gen_number __PR((char *keyword, Llong arg)); 300 extern void gen_text __PR((char *keyword, char *arg, size_t alen, 301 Uint flags)); 302 303 extern void tcb_to_xhdr_reset __PR((void)); 304 extern int tcb_to_xhdr __PR((TCB *ptb, FINFO *info)); 305 306 extern BOOL get_xtime __PR((char *keyword, char *arg, size_t len, 307 time_t *secp, long *nsecp)); 308 #ifdef __needed_ 309 extern BOOL get_number __PR((char *keyword, char *arg, Llong *llp)); 310 #endif 311 extern BOOL get_unumber __PR((char *keyword, char *arg, Ullong *ullp, 312 Ullong maxval)); 313 extern BOOL get_snumber __PR((char *keyword, char *arg, Ullong *ullp, 314 BOOL *negp, 315 Ullong minval, Ullong maxval)); 316 #endif 317 318 /* 319 * xattr.c 320 */ 321 #ifdef _STAR_H 322 extern void opt_xattr __PR((void)); 323 extern void opt_selinux __PR((void)); 324 extern BOOL get_xattr __PR((register FINFO *info)); 325 extern BOOL set_xattr __PR((register FINFO *info)); 326 #ifdef USE_SELINUX 327 extern BOOL setselinux __PR((register FINFO *info)); 328 #endif 329 extern void free_xattr __PR((star_xattr_t **xattr)); 330 #endif 331 332 /* 333 * hole.c 334 */ 335 #ifdef _STAR_H 336 #ifdef EOF 337 extern int get_forced_hole __PR((FILE *f, FINFO *info)); 338 extern int get_sparse __PR((FILE *f, FINFO *info)); 339 extern int get_as_hole __PR((FILE *f, FINFO *info)); 340 extern BOOL cmp_sparse __PR((FILE *f, FINFO *info)); 341 extern void put_sparse __PR((int *fp, FINFO *info)); 342 extern BOOL sparse_file __PR((int *fp, FINFO *info)); 343 #endif 344 extern int gnu_skip_extended __PR((FINFO *info)); 345 #endif 346 347 /* 348 * lhash.c 349 */ 350 extern size_t hash_size __PR((size_t size)); 351 #ifdef EOF 352 extern void hash_build __PR((FILE *fp)); 353 extern void hash_xbuild __PR((FILE *fp)); 354 #endif 355 extern BOOL hash_lookup __PR((char *str)); 356 extern BOOL hash_xlookup __PR((char *str)); 357 358 /* 359 * list.c 360 */ 361 #ifdef _STAR_H 362 extern void list __PR((void)); 363 extern void list_file __PR((register FINFO *info)); 364 extern void vprint __PR((FINFO *info)); 365 #endif 366 367 /* 368 * longnames.c 369 */ 370 #ifdef _STAR_H 371 extern BOOL name_to_tcb __PR((FINFO *info, TCB *ptb)); 372 extern void tcb_to_name __PR((TCB *ptb, FINFO *info)); 373 extern void tcb_undo_split __PR((TCB *ptb, FINFO *info)); 374 extern int tcb_to_longname __PR((register TCB *ptb, register FINFO *info)); 375 extern void write_longnames __PR((register FINFO *info)); 376 #endif 377 378 /* 379 * props.c 380 */ 381 extern void setprops __PR((long htype)); 382 extern void printprops __PR((void)); 383 384 /* 385 * remove.c 386 */ 387 extern BOOL remove_file __PR((char *name, BOOL isfirst)); 388 389 /* 390 * star_unix.c 391 */ 392 #ifdef _STAR_H 393 extern BOOL _getinfo __PR((char *name, FINFO *info)); 394 extern BOOL _lgetinfo __PR((char *name, FINFO *info)); 395 extern BOOL getinfo __PR((char *name, FINFO *info)); 396 #ifdef HAVE_FSTATAT 397 extern BOOL getinfoat __PR((int fd, char *name, FINFO *info)); 398 #endif 399 #ifdef _SCHILY_STAT_H 400 extern BOOL getstat __PR((char *name, struct stat *sp)); 401 extern BOOL stat_to_info __PR((int fd, struct stat *sp, FINFO *info)); 402 #endif 403 #ifdef EOF 404 extern void checkarch __PR((FILE *f)); 405 extern BOOL samefile __PR((FILE *fp1, FILE *fp2)); 406 #endif 407 extern BOOL archisnull __PR((const char *name)); 408 extern void setmodes __PR((FINFO *info)); 409 extern int snulltimes __PR((char *name, FINFO *info)); 410 extern int sxsymlink __PR((char *name, FINFO *info)); 411 extern int rs_acctime __PR((int fd, FINFO *info)); 412 extern void setdirmodes __PR((char *name, mode_t mode)); 413 extern mode_t osmode __PR((mode_t tarmode)); 414 415 /* 416 * lpath_unix.c 417 */ 418 extern int lchdir __PR((char *name)); 419 extern char *lgetcwd __PR((void)); 420 extern int lmkdir __PR((char *name, mode_t mode)); 421 extern int laccess __PR((char *name, int amode)); 422 #ifdef _SCHILY_STAT_H 423 extern int lstatat __PR((char *name, struct stat *buf, int flag)); 424 #endif 425 extern int lchmodat __PR((char *name, mode_t mode, int flag)); 426 #ifdef _SCHILY_TIME_H 427 extern int lutimensat __PR((char *name, struct timespec *ts, 428 int flag)); 429 #endif 430 extern int lreadlink __PR((char *name, char *buf, size_t _bufsize)); 431 extern int lsymlink __PR((char *name, char *name2)); 432 extern int llink __PR((char *name, char *name2)); 433 extern int lrename __PR((char *name, char *name2)); 434 extern int lmknod __PR((char *name, mode_t mode, dev_t dev)); 435 extern int lmkfifo __PR((char *name, mode_t mode)); 436 extern int lchownat __PR((char *name, uid_t uid, gid_t gid, 437 int flag)); 438 extern int lunlinkat __PR((char *name, int flag)); 439 extern char *lmktemp __PR((char *name)); 440 #ifdef EOF 441 extern FILE *lfilemopen __PR((char *name, char *mode, mode_t cmode)); 442 #endif 443 extern int _lfileopen __PR((char *name, char *mode)); 444 #ifdef _SCHILY_DIRENT_H 445 EXPORT DIR *lopendir __PR((char *name)); 446 #endif 447 #endif /* _STAR_H */ 448 EXPORT int hop_dirs __PR((char *name, char **np)); 449 450 /* 451 * acl_unix.c 452 */ 453 extern void opt_acl __PR((void)); 454 #ifdef _STAR_H 455 extern BOOL get_acls __PR((FINFO *info)); 456 extern void set_acls __PR((FINFO *info)); 457 #endif 458 459 /* 460 * unicode.c 461 */ 462 extern void utf8_init __PR((int type)); 463 extern void utf8_fini __PR((void)); 464 extern size_t to_utf8 __PR((Uchar *to, size_t tolen, 465 Uchar *from, size_t len)); 466 extern BOOL from_utf8 __PR((Uchar *to, size_t tolen, 467 Uchar *from, size_t *len)); 468 469 /* 470 * fflags.c 471 */ 472 extern void opt_fflags __PR((void)); 473 #ifdef _STAR_H 474 extern void get_fflags __PR((FINFO *info)); 475 extern void set_fflags __PR((FINFO *info)); 476 extern char *textfromflags __PR((FINFO *info, char *buf)); 477 extern int texttoflags __PR((FINFO *info, char *buf)); 478 #endif 479 480 /* 481 * defaults.c 482 */ 483 extern char *get_stardefaults __PR((char *name)); 484 extern void star_defaults __PR((long *fsp, BOOL *no_fsyncp, 485 BOOL *secure_linkp, 486 char *dfltname)); 487 extern BOOL star_darchive __PR((char *arname, char *dfltname)); 488 489 /* 490 * subst.c 491 */ 492 extern int paxpsubst __PR((char *cmd, BOOL *arg)); 493 extern int parsesubst __PR((char *cmd, BOOL *arg)); 494 #ifdef _STAR_H 495 extern BOOL subst __PR((FINFO *info)); 496 extern BOOL ia_change __PR((TCB *ptb, FINFO *info)); 497 #endif 498 499 /* 500 * findinfo.c 501 */ 502 #ifdef _STAR_H 503 EXPORT BOOL findinfo __PR((FINFO *info)); 504 #endif 505 506 /* 507 * paxopts.c 508 */ 509 extern int ppaxopts __PR((const char *opts)); 510