18fae3551SRodney W. Grimes /*- 2*8a16b7a1SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 3*8a16b7a1SPedro F. Giffuni * 48fae3551SRodney W. Grimes * Copyright (c) 1992, 1993 58fae3551SRodney W. Grimes * The Regents of the University of California. All rights reserved. 68fae3551SRodney W. Grimes * 78fae3551SRodney W. Grimes * Redistribution and use in source and binary forms, with or without 88fae3551SRodney W. Grimes * modification, are permitted provided that the following conditions 98fae3551SRodney W. Grimes * are met: 108fae3551SRodney W. Grimes * 1. Redistributions of source code must retain the above copyright 118fae3551SRodney W. Grimes * notice, this list of conditions and the following disclaimer. 128fae3551SRodney W. Grimes * 2. Redistributions in binary form must reproduce the above copyright 138fae3551SRodney W. Grimes * notice, this list of conditions and the following disclaimer in the 148fae3551SRodney W. Grimes * documentation and/or other materials provided with the distribution. 15fbbd9655SWarner Losh * 3. Neither the name of the University nor the names of its contributors 168fae3551SRodney W. Grimes * may be used to endorse or promote products derived from this software 178fae3551SRodney W. Grimes * without specific prior written permission. 188fae3551SRodney W. Grimes * 198fae3551SRodney W. Grimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 208fae3551SRodney W. Grimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 218fae3551SRodney W. Grimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 228fae3551SRodney W. Grimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 238fae3551SRodney W. Grimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 248fae3551SRodney W. Grimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 258fae3551SRodney W. Grimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 268fae3551SRodney W. Grimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 278fae3551SRodney W. Grimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 288fae3551SRodney W. Grimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 298fae3551SRodney W. Grimes * SUCH DAMAGE. 308fae3551SRodney W. Grimes */ 318fae3551SRodney W. Grimes 322db673abSWarner Losh struct entry *addentry(char *, ino_t, int); 332db673abSWarner Losh long addfile(char *, ino_t, int); 342db673abSWarner Losh int addwhiteout(char *); 352db673abSWarner Losh void badentry(struct entry *, char *); 36cca1b3aaSJaakko Heinonen void canon(char *, char *, size_t); 372db673abSWarner Losh void checkrestore(void); 382db673abSWarner Losh void closemt(void); 392db673abSWarner Losh void createfiles(void); 402db673abSWarner Losh void createleaves(char *); 412db673abSWarner Losh void createlinks(void); 422db673abSWarner Losh long deletefile(char *, ino_t, int); 432db673abSWarner Losh void deleteino(ino_t); 442db673abSWarner Losh void delwhiteout(struct entry *); 452db673abSWarner Losh ino_t dirlookup(const char *); 462db673abSWarner Losh void done(int) __dead2; 472db673abSWarner Losh void dumpsymtable(char *, long); 482db673abSWarner Losh void extractdirs(int); 492db673abSWarner Losh int extractfile(char *); 502db673abSWarner Losh void findunreflinks(void); 512db673abSWarner Losh char *flagvalues(struct entry *); 522db673abSWarner Losh void freeentry(struct entry *); 532db673abSWarner Losh void freename(char *); 542db673abSWarner Losh int genliteraldir(char *, ino_t); 552db673abSWarner Losh char *gentempname(struct entry *); 5671a53e69SPedro F. Giffuni void getfile(void (*)(char *, size_t), void (*)(char *, size_t), 5771a53e69SPedro F. Giffuni void (*)(char *, size_t)); 582db673abSWarner Losh void getvol(long); 592db673abSWarner Losh void initsymtable(char *); 602db673abSWarner Losh int inodetype(ino_t); 612db673abSWarner Losh int linkit(char *, char *, int); 622db673abSWarner Losh struct entry *lookupino(ino_t); 632db673abSWarner Losh struct entry *lookupname(char *); 642db673abSWarner Losh long listfile(char *, ino_t, int); 652db673abSWarner Losh ino_t lowerbnd(ino_t); 662db673abSWarner Losh void mktempname(struct entry *); 672db673abSWarner Losh void moveentry(struct entry *, char *); 682db673abSWarner Losh void msg(const char *, ...) __printflike(1, 2); 692db673abSWarner Losh char *myname(struct entry *); 702db673abSWarner Losh void newnode(struct entry *); 712db673abSWarner Losh void newtapebuf(long); 722db673abSWarner Losh long nodeupdates(char *, ino_t, int); 732db673abSWarner Losh void onintr(int); 742db673abSWarner Losh void panic(const char *, ...) __printflike(1, 2); 752db673abSWarner Losh void pathcheck(char *); 762db673abSWarner Losh struct direct *pathsearch(const char *); 772db673abSWarner Losh void printdumpinfo(void); 782db673abSWarner Losh void removeleaf(struct entry *); 792db673abSWarner Losh void removenode(struct entry *); 802db673abSWarner Losh void removeoldleaves(void); 812db673abSWarner Losh void removeoldnodes(void); 822db673abSWarner Losh void renameit(char *, char *); 832db673abSWarner Losh int reply(char *); 841916772eSStefan Farfeleder void *rst_opendir(const char *); 852db673abSWarner Losh struct direct *rst_readdir(RST_DIR *); 861916772eSStefan Farfeleder void rst_closedir(void *); 872db673abSWarner Losh void runcmdshell(void); 882db673abSWarner Losh char *savename(char *); 89c9bf8148SConrad Meyer enum set_extattr_mode { 90c9bf8148SConrad Meyer SXA_FILE, 91c9bf8148SConrad Meyer SXA_LINK, 92c9bf8148SConrad Meyer SXA_FD, 93c9bf8148SConrad Meyer }; 94c9bf8148SConrad Meyer void set_extattr(int, char *, void *, int, enum set_extattr_mode); 952db673abSWarner Losh void setdirmodes(int); 96c51d70c6SBrian Feldman void setinput(char *, int); 972db673abSWarner Losh void setup(void); 982db673abSWarner Losh void skipdirs(void); 992db673abSWarner Losh void skipfile(void); 1002db673abSWarner Losh void skipmaps(void); 1012db673abSWarner Losh void swabst(u_char *, u_char *); 1022db673abSWarner Losh void treescan(char *, ino_t, long (*)(char *, ino_t, int)); 1032db673abSWarner Losh ino_t upperbnd(ino_t); 1042db673abSWarner Losh long verifyfile(char *, ino_t, int); 10571a53e69SPedro F. Giffuni void xtrnull(char *, size_t); 1068fae3551SRodney W. Grimes 1078fae3551SRodney W. Grimes /* From ../dump/dumprmt.c */ 1082db673abSWarner Losh void rmtclose(void); 1092db673abSWarner Losh int rmthost(char *); 1102db673abSWarner Losh int rmtioctl(int, int); 1112db673abSWarner Losh int rmtopen(char *, int); 1122db673abSWarner Losh int rmtread(char *, int); 1132db673abSWarner Losh int rmtseek(int, int); 114