xfs_daddr_t orig_daddr = iocur_top->bb;
xfs_daddr_t last_daddr;
unsigned int nr;
- int ret;
+ int ret = 0;
- ret = eval("push");
- if (ret)
- return ret;
+ push_cur_and_set_type();
nr = 1;
do {
nr++;
} while (iocur_top->bb != orig_daddr && iocur_top->bb != last_daddr);
- ret = eval("pop");
- return ret;
err:
- eval("pop");
+ pop_cur();
return ret;
}
xfs_daddr_t orig_daddr = iocur_top->bb;
xfs_daddr_t last_daddr;
int level;
- int ret;
+ int ret = 0;
- ret = eval("push");
- if (ret)
- return ret;
+ push_cur_and_set_type();
cur_agno = XFS_FSB_TO_AGNO(mp, XFS_DADDR_TO_FSB(mp, iocur_top->bb));
level = xfs_btree_get_level(iocur_top->data);
iocur_top->bb != orig_daddr &&
iocur_top->bb != last_daddr);
- ret = eval("pop");
- return ret;
err:
- eval("pop");
+ pop_cur();
return ret;
}
{
char *prefix;
struct xfs_dinode *dip;
- int ret;
+ int ret = 0;
if (attrfork)
prefix = "a.bmbt";
}
}
- ret = eval("push");
- if (ret)
- return ret;
+ push_cur_and_set_type();
if (dump_node_blocks) {
ret = eval("print %s.keys", prefix);
if (ret)
goto err;
- ret = eval("pop");
- return ret;
err:
- eval("pop");
+ pop_cur();
return ret;
}
xfs_daddr_t orig_daddr = iocur_top->bb;
xfs_daddr_t last_daddr;
unsigned int nr;
- int ret;
+ int ret = 0;
- ret = eval("push");
- if (ret)
- return ret;
+ push_cur_and_set_type();
nr = 1;
do {
nr++;
} while (iocur_top->bb != orig_daddr && iocur_top->bb != last_daddr);
- ret = eval("pop");
- return ret;
err:
- eval("pop");
+ pop_cur();
return ret;
}
xfs_daddr_t orig_daddr = iocur_top->bb;
xfs_daddr_t last_daddr;
int level;
- int ret;
+ int ret = 0;
- ret = eval("push");
- if (ret)
- return ret;
+ push_cur_and_set_type();
cur_agno = XFS_FSB_TO_AGNO(mp, XFS_DADDR_TO_FSB(mp, iocur_top->bb));
level = dbp->level(iocur_top->data);
iocur_top->bb != orig_daddr &&
iocur_top->bb != last_daddr);
- ret = eval("pop");
- return ret;
err:
- eval("pop");
+ pop_cur();
return ret;
}
cur_typ = NULL;
}
+void
+push_cur_and_set_type(void)
+{
+ /* save current state */
+ push_cur();
+ if (iocur_top[-1].typ && iocur_top[-1].typ->typnm == TYP_INODE)
+ set_cur_inode(iocur_top[-1].ino);
+ else
+ set_cur(iocur_top[-1].typ, iocur_top[-1].bb,
+ iocur_top[-1].blen, DB_RING_IGN,
+ iocur_top[-1].bbmap);
+}
+
static int
push_f(
int argc,
}
}
- /* save current state */
- push_cur();
- if (iocur_top[-1].typ && iocur_top[-1].typ->typnm == TYP_INODE)
- set_cur_inode(iocur_top[-1].ino);
- else
- set_cur(iocur_top[-1].typ, iocur_top[-1].bb,
- iocur_top[-1].blen, DB_RING_IGN,
- iocur_top[-1].bbmap);
+ push_cur_and_set_type();
/* run requested command */
if (argc>1)
extern void pop_cur(void);
extern void print_iocur(char *tag, iocur_t *ioc);
extern void push_cur(void);
+extern void push_cur_and_set_type(void);
extern int read_buf(int64_t daddr, int count, void *bufp);
extern void write_cur(void);
extern void set_cur(const struct typ *type, xfs_daddr_t blknum,