version 1.1, 2019/03/26 18:32:07 |
version 1.4, 2019/04/08 22:47:34 |
|
|
* 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; |
|
} else { |
|
fname = "<stdin>"; |
|
fd = STDIN_FILENO; |
|
} |
|
|
fd = strcmp(fname, "-") == 0 ? |
/* Parse. */ |
STDIN_FILENO : open(fname, O_RDONLY, 0); |
|
|
|
if (fd == -1) { |
if ((parser = parse_alloc(warn)) == NULL) { |
perror(fname); |
perror(NULL); |
return 1; |
return 1; |
} |
} |
|
tree = parse_file(parser, fd, fname); |
|
rc = tree->flags & TREE_FAIL ? 1 : 0; |
|
|
/* Parse and format. */ |
/* Format. */ |
|
|
rc = 1; |
if (tree->root != NULL) { |
if ((parser = parse_alloc(warn)) != NULL) { |
if (rc) |
if ((tree = parse_file(parser, fd, fname)) != NULL) { |
fputc('\n', stderr); |
if ((tree->flags & TREE_FAIL) == 0) |
ptree_print(tree); |
rc = 0; |
if (rc) |
ptree_print(tree); |
fputs("\nThe output may be incomplete, see the " |
pnode_unlink(tree->root); |
"parse error reported above.\n\n", stderr); |
tree->root = NULL; |
} |
} |
parse_free(parser); |
parse_free(parser); |
|
} else |
|
perror(NULL); |
|
|
|
if (fd != STDIN_FILENO) |
|
close(fd); |
|
return rc; |
return rc; |
|
|
usage: |
usage: |