Deleted Added
sdiff udiff text old ( 89826 ) new ( 89827 )
full compact
1/* $NetBSD: fsdb.c,v 1.2 1995/10/08 23:18:10 thorpej Exp $ */
2
3/*
4 * Copyright (c) 1995 John T. Kohl
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 16 unchanged lines hidden (view full) ---

25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#ifndef lint
32static const char rcsid[] =
33 "$FreeBSD: head/sbin/fsdb/fsdb.c 89826 2002-01-26 15:47:24Z joerg $";
34#endif /* not lint */
35
36#include <sys/param.h>
37#include <sys/time.h>
38#include <ctype.h>
39#include <err.h>
40#include <grp.h>
41#include <histedit.h>

--- 78 unchanged lines hidden (view full) ---

120#define CMDFUNC(func) int func __P((int argc, char *argv[]))
121#define CMDFUNCSTART(func) int func(argc, argv) \
122 int argc; \
123 char *argv[];
124
125CMDFUNC(helpfn);
126CMDFUNC(focus); /* focus on inode */
127CMDFUNC(active); /* print active inode */
128CMDFUNC(focusname); /* focus by name */
129CMDFUNC(zapi); /* clear inode */
130CMDFUNC(uplink); /* incr link */
131CMDFUNC(downlink); /* decr link */
132CMDFUNC(linkcount); /* set link count */
133CMDFUNC(quit); /* quit */
134CMDFUNC(ls); /* list directory */
135CMDFUNC(rm); /* remove name */

--- 17 unchanged lines hidden (view full) ---

153 { "?", "Print out help", 1, 1, FL_RO, helpfn },
154 { "inode", "Set active inode to INUM", 2, 2, FL_RO, focus },
155 { "clri", "Clear inode INUM", 2, 2, FL_WR, zapi },
156 { "lookup", "Set active inode by looking up NAME", 2, 2, FL_RO, focusname },
157 { "cd", "Set active inode by looking up NAME", 2, 2, FL_RO, focusname },
158 { "back", "Go to previous active inode", 1, 1, FL_RO, back },
159 { "active", "Print active inode", 1, 1, FL_RO, active },
160 { "print", "Print active inode", 1, 1, FL_RO, active },
161 { "uplink", "Increment link count", 1, 1, FL_WR, uplink },
162 { "downlink", "Decrement link count", 1, 1, FL_WR, downlink },
163 { "linkcount", "Set link count to COUNT", 2, 2, FL_WR, linkcount },
164 { "ls", "List current inode as directory", 1, 1, FL_RO, ls },
165 { "rm", "Remove NAME from current inode directory", 2, 2, FL_WR, rm },
166 { "del", "Remove NAME from current inode directory", 2, 2, FL_WR, rm },
167 { "ln", "Hardlink INO into current inode directory as NAME", 3, 3, FL_WR, ln },
168 { "chinum", "Change dir entry number INDEX to INUM", 3, 3, FL_WR, chinum },

--- 50 unchanged lines hidden (view full) ---

219 char **cmd_argv;
220 struct cmdtable *cmdp;
221 History *hist;
222 EditLine *elptr;
223 HistEvent he;
224
225 curinode = ginode(ROOTINO);
226 curinum = ROOTINO;
227 printactive();
228
229 hist = history_init();
230 history(hist, &he, H_EVENT, 100); /* 100 elt history buffer */
231
232 elptr = el_init("fsdb", stdin, stdout, stderr);
233 el_set(elptr, EL_EDITOR, "emacs");
234 el_set(elptr, EL_PROMPT, prompt);
235 el_set(elptr, EL_HIST, history, hist);

--- 66 unchanged lines hidden (view full) ---

302{
303 ino_t inum;
304 char *cp;
305
306 GETINUM(1,inum);
307 curinode = ginode(inum);
308 ocurrent = curinum;
309 curinum = inum;
310 printactive();
311 return 0;
312}
313
314CMDFUNCSTART(back)
315{
316 curinum = ocurrent;
317 curinode = ginode(curinum);
318 printactive();
319 return 0;
320}
321
322CMDFUNCSTART(zapi)
323{
324 ino_t inum;
325 struct dinode *dp;
326 char *cp;

--- 4 unchanged lines hidden (view full) ---

331 inodirty();
332 if (curinode) /* re-set after potential change */
333 curinode = ginode(curinum);
334 return 0;
335}
336
337CMDFUNCSTART(active)
338{
339 printactive();
340 return 0;
341}
342
343
344CMDFUNCSTART(quit)
345{
346 return -1;
347}
348
349CMDFUNCSTART(uplink)
350{

--- 75 unchanged lines hidden (view full) ---

426 idesc.id_number = curinum;
427 idesc.id_func = findino;
428 idesc.id_name = name;
429 idesc.id_type = DATA;
430 idesc.id_fix = IGNORE;
431 if (ckinode(curinode, &idesc) & FOUND) {
432 curinum = idesc.id_parent;
433 curinode = ginode(curinum);
434 printactive();
435 return 1;
436 } else {
437 warnx("name `%s' not found in current inode directory", name);
438 return 0;
439 }
440}
441
442CMDFUNCSTART(focusname)

--- 191 unchanged lines hidden (view full) ---

634 if (tp == &typenamemap[sizeof(typenamemap)/sizeof(*typenamemap)]) {
635 warnx("type `%s' not known", argv[1]);
636 warnx("try one of `file', `dir', `socket', `fifo'");
637 return 1;
638 }
639 curinode->di_mode &= ~IFMT;
640 curinode->di_mode |= type;
641 inodirty();
642 printactive();
643 return 0;
644}
645
646CMDFUNCSTART(chlen)
647{
648 int rval = 1;
649 long len;
650 char *cp;

--- 4 unchanged lines hidden (view full) ---

655 len = strtol(argv[1], &cp, 0);
656 if (cp == argv[1] || *cp != '\0' || len < 0) {
657 warnx("bad length `%s'", argv[1]);
658 return 1;
659 }
660
661 curinode->di_size = len;
662 inodirty();
663 printactive();
664 return rval;
665}
666
667CMDFUNCSTART(chmode)
668{
669 int rval = 1;
670 long modebits;
671 char *cp;

--- 5 unchanged lines hidden (view full) ---

677 if (cp == argv[1] || *cp != '\0' || (modebits & ~07777)) {
678 warnx("bad modebits `%s'", argv[1]);
679 return 1;
680 }
681
682 curinode->di_mode &= ~07777;
683 curinode->di_mode |= modebits;
684 inodirty();
685 printactive();
686 return rval;
687}
688
689CMDFUNCSTART(chaflags)
690{
691 int rval = 1;
692 u_long flags;
693 char *cp;

--- 8 unchanged lines hidden (view full) ---

702 }
703
704 if (flags > UINT_MAX) {
705 warnx("flags set beyond 32-bit range of field (%lx)\n", flags);
706 return(1);
707 }
708 curinode->di_flags = flags;
709 inodirty();
710 printactive();
711 return rval;
712}
713
714CMDFUNCSTART(chgen)
715{
716 int rval = 1;
717 long gen;
718 char *cp;

--- 8 unchanged lines hidden (view full) ---

727 }
728
729 if (gen > INT_MAX || gen < INT_MIN) {
730 warnx("gen set beyond 32-bit range of field (%lx)\n", gen);
731 return(1);
732 }
733 curinode->di_gen = gen;
734 inodirty();
735 printactive();
736 return rval;
737}
738
739CMDFUNCSTART(linkcount)
740{
741 int rval = 1;
742 int lcnt;
743 char *cp;

--- 8 unchanged lines hidden (view full) ---

752 }
753 if (lcnt > USHRT_MAX || lcnt < 0) {
754 warnx("max link count is %d\n", USHRT_MAX);
755 return 1;
756 }
757
758 curinode->di_nlink = lcnt;
759 inodirty();
760 printactive();
761 return rval;
762}
763
764CMDFUNCSTART(chowner)
765{
766 int rval = 1;
767 unsigned long uid;
768 char *cp;

--- 10 unchanged lines hidden (view full) ---

779 } else {
780 warnx("bad uid `%s'", argv[1]);
781 return 1;
782 }
783 }
784
785 curinode->di_uid = uid;
786 inodirty();
787 printactive();
788 return rval;
789}
790
791CMDFUNCSTART(chgroup)
792{
793 int rval = 1;
794 unsigned long gid;
795 char *cp;

--- 9 unchanged lines hidden (view full) ---

805 } else {
806 warnx("bad gid `%s'", argv[1]);
807 return 1;
808 }
809 }
810
811 curinode->di_gid = gid;
812 inodirty();
813 printactive();
814 return rval;
815}
816
817int
818dotime(name, rts)
819 char *name;
820 struct timespec *rts;
821{

--- 49 unchanged lines hidden (view full) ---

871 return 0;
872}
873
874CMDFUNCSTART(chmtime)
875{
876 if (dotime(argv[1], &curinode->di_ctime))
877 return 1;
878 inodirty();
879 printactive();
880 return 0;
881}
882
883CMDFUNCSTART(chatime)
884{
885 if (dotime(argv[1], &curinode->di_ctime))
886 return 1;
887 inodirty();
888 printactive();
889 return 0;
890}
891
892CMDFUNCSTART(chctime)
893{
894 if (dotime(argv[1], &curinode->di_ctime))
895 return 1;
896 inodirty();
897 printactive();
898 return 0;
899}