version 1.2, 2019/03/26 20:06:16 |
version 1.5, 2019/04/09 15:23:51 |
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
*/ |
*/ |
#include <fcntl.h> |
|
#include <getopt.h> |
#include <getopt.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <string.h> |
#include <string.h> |
Line 64 main(int argc, char *argv[]) |
|
Line 63 main(int argc, char *argv[]) |
|
if (argc > 1) { |
if (argc > 1) { |
fprintf(stderr, "%s: Too many arguments\n", argv[1]); |
fprintf(stderr, "%s: Too many arguments\n", argv[1]); |
goto usage; |
goto usage; |
} else |
} else if (argc == 1) { |
fname = argc > 0 ? argv[0] : "-"; |
fname = argv[0]; |
|
fd = -1; |
fd = strcmp(fname, "-") == 0 ? |
} else { |
STDIN_FILENO : open(fname, O_RDONLY, 0); |
fname = "<stdin>"; |
|
fd = STDIN_FILENO; |
if (fd == -1) { |
|
perror(fname); |
|
return 1; |
|
} |
} |
|
|
/* Parse and format. */ |
/* Parse. */ |
|
|
rc = 1; |
if ((parser = parse_alloc(warn)) == NULL) { |
if ((parser = parse_alloc(warn)) != NULL) { |
|
if ((tree = parse_file(parser, fd, fname)) != NULL) { |
|
if (tree->flags & TREE_FAIL) |
|
fputc('\n', stderr); |
|
else |
|
rc = 0; |
|
ptree_print(tree); |
|
if (tree->flags & TREE_FAIL) |
|
fputs("\nThe output is incomplete, see " |
|
"the parse error reported above.\n\n", |
|
stderr); |
|
pnode_unlink(tree->root); |
|
tree->root = NULL; |
|
} |
|
parse_free(parser); |
|
} else |
|
perror(NULL); |
perror(NULL); |
|
return 6; |
|
} |
|
tree = parse_file(parser, fd, fname); |
|
rc = tree->flags & TREE_ERROR ? 3 : tree->flags & TREE_WARN ? 2 : 0; |
|
|
if (fd != STDIN_FILENO) |
/* Format. */ |
close(fd); |
|
|
if (tree->root != NULL) { |
|
if (rc > 2) |
|
fputc('\n', stderr); |
|
ptree_print(tree); |
|
if (rc > 2) |
|
fputs("\nThe output may be incomplete, see the " |
|
"parse error reported above.\n\n", stderr); |
|
} |
|
parse_free(parser); |
return rc; |
return rc; |
|
|
usage: |
usage: |
fprintf(stderr, "usage: %s [-W] [input_filename]\n", progname); |
fprintf(stderr, "usage: %s [-W] [input_filename]\n", progname); |
return 1; |
return 5; |
} |
} |