Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<sys/stat.h>
- #include<fcntl.h>
- #include<inttypes.h>
- #include<stdio.h>
- #include<unistd.h>
- struct Item
- {
- int value;
- uint32_t next_pointer;
- };
- int
- main(int argc, char *argv[])
- {
- int exit_code = 0;
- int in_file = open(argv[1], O_RDONLY);
- if (-1 == in_file) {
- exit_code = 1;
- goto finally;
- }
- struct Item cur_item;
- int in_read;
- while ((in_read = read(in_file, &cur_item, sizeof(struct Item))) > 0) {
- printf("%d\n", cur_item.value);
- uint32_t cur_next_pointer = cur_item.next_pointer;
- if (cur_next_pointer == 0) {
- break;
- }
- else {
- int lseek_result = lseek(in_file, cur_next_pointer, SEEK_SET);
- if (lseek_result == -1) {
- exit_code = 3;
- goto finally;
- }
- }
- }
- if (-1 == in_read) {
- exit_code = 2;
- goto finally;
- }
- finally:
- close(in_file);
- return exit_code;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement