1
0
mirror of git://projects.qi-hardware.com/eda-tools.git synced 2024-11-29 18:45:19 +02:00

genex: option -D to dump all canonical component names (for missing-in-tree)

This commit is contained in:
Werner Almesberger 2012-04-17 22:18:12 -03:00
parent 1d47668b98
commit 7d97a749f4
3 changed files with 36 additions and 8 deletions

View File

@ -223,7 +223,7 @@ void set_libs(struct node *node,
}
static void dump_level(const struct node *tree, int level)
static void dump_tree_level(const struct node *tree, int level)
{
const struct node *n;
const struct line *line;
@ -240,12 +240,30 @@ static void dump_level(const struct node *tree, int level)
printf("\n");
for (line = n->comment; line; line = line->next)
printf("%*s\"%s\"\n", 4*level+2, "", line->s);
dump_level(n->child, level+1);
dump_tree_level(n->child, level+1);
}
}
void dump_tree(void)
{
dump_level(tree, 0);
dump_tree_level(tree, 0);
}
static void dump_comp_level(const struct node *tree)
{
const struct node *n;
for (n = tree; n; n = n->next) {
if (n->lib)
printf("%s\n", n->names->s);
dump_comp_level(n->child);
}
}
void dump_comp(void)
{
dump_comp_level(tree);
}

View File

@ -43,5 +43,6 @@ void set_libs(struct node *node,
const char *(*find_lib)(const char *sym, const struct name **names,
int *units));
void dump_tree(void);
void dump_comp(void);
#endif /* !COMP_H */

View File

@ -23,9 +23,10 @@
static void usage(const char *name)
{
fprintf(stderr,
"usage: %s [-d] [-p] [-P] [-L libdir ...] [-l lib ...] hierarchy\n"
"usage: %s [-d|-D] [-p] [-P] [-L libdir ...] [-l lib ...] hierarchy\n"
" %*s [descriptions ...]\n\n"
" -d dump the tree instead of generating a PDF\n"
" -D dump all the canonical component names (without aliases)\n"
" -L libdir search all libraries in the specified directory\n"
" -l lib search the specified component library\n"
" -p use portrait orientation; default: landscape\n"
@ -39,13 +40,16 @@ int main(int argc, char **argv)
{
FILE *file;
int c;
int dump = 0, postscript = 0, portrait = 0;
int opt_dump_tree = 0, opt_dump_comp = 0, postscript = 0, portrait = 0;
char **arg;
while ((c = getopt(argc, argv, "dL:l:Pp")) != EOF)
while ((c = getopt(argc, argv, "dDL:l:Pp")) != EOF)
switch (c) {
case 'd':
dump = 1;
opt_dump_tree = 1;
break;
case 'D':
opt_dump_comp = 1;
break;
case 'L':
add_libdir(optarg);
@ -63,6 +67,9 @@ int main(int argc, char **argv)
usage(*argv);
}
if (opt_dump_tree && opt_dump_comp)
usage(*argv);
switch (argc-optind) {
case 1:
case 2:
@ -89,8 +96,10 @@ int main(int argc, char **argv)
read_desc(file);
fclose(file);
}
if (dump)
if (opt_dump_tree)
dump_tree();
else if (opt_dump_comp)
dump_comp();
else
make_pdf(!postscript, portrait);
return 0;