aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-01-26 13:36:11 +0100
committerGustav Sörnäs <gustav@sornas.net>2021-01-26 13:36:11 +0100
commit2d909147580279eee111eb4791fb7738fda638c8 (patch)
tree4e28c7018a7b029f6cd7e37ad66202d0fc6196ef
parente5e6a8650a5ec4ef9ed73c9b7a31551258849f15 (diff)
downloadpintos-linked-list-2d909147580279eee111eb4791fb7738fda638c8.tar.gz
tabs -> spaces
-rw-r--r--main.c216
1 files changed, 108 insertions, 108 deletions
diff --git a/main.c b/main.c
index ae9910b..6173f26 100644
--- a/main.c
+++ b/main.c
@@ -4,142 +4,142 @@
#include <string.h>
struct student {
- char *name;
- struct list_elem elem;
+ char *name;
+ struct list_elem elem;
};
// Read a line from stdin, strip the eventual newline and return a pointer
// to the string. Remember to free the pointer.
char *read_input() {
- char *buf = NULL;
- size_t buf_size = 0;
- size_t read = getline(&buf, &buf_size, stdin);
- if (read == -1) {
- free(buf);
- buf = NULL;
- } else if (read >= 1 && buf[read - 1] == '\n') {
- buf[read - 1] = '\0';
- }
- return buf;
+ char *buf = NULL;
+ size_t buf_size = 0;
+ size_t read = getline(&buf, &buf_size, stdin);
+ if (read == -1) {
+ free(buf);
+ buf = NULL;
+ } else if (read >= 1 && buf[read - 1] == '\n') {
+ buf[read - 1] = '\0';
+ }
+ return buf;
}
int read_int() {
- char *buf = read_input();
- int res = -1;
- if (!buf) {
- printf("Failed to read int from stdin\n");
- } else {
- res = atoi(buf);
- }
- free(buf);
- return res;
+ char *buf = read_input();
+ int res = -1;
+ if (!buf) {
+ printf("Failed to read int from stdin\n");
+ } else {
+ res = atoi(buf);
+ }
+ free(buf);
+ return res;
}
// Fetch a student name from the terminal input and add it to the list.
void insert(struct list *student_list) {
- struct student *student = malloc(sizeof(struct student));
- char *name = read_input();
- if (!name) {
- printf("Failed to read student name\n");
- free(student);
- } else {
- student->name = name;
- printf("Inserted student with name '%s'\n", student->name);
- list_push_front(student_list, &student->elem);
- }
+ struct student *student = malloc(sizeof(struct student));
+ char *name = read_input();
+ if (!name) {
+ printf("Failed to read student name\n");
+ free(student);
+ } else {
+ student->name = name;
+ printf("Inserted student with name '%s'\n", student->name);
+ list_push_front(student_list, &student->elem);
+ }
}
// Get a student name from the terminal input, remove it from the list and
// deallocate the appropriate memory (if needed).
void delete(struct list *student_list) {
- char *name = read_input();
- if (!name) {
- printf("Failed to read student name\n");
- } else {
- struct list_elem *e;
- for (e = list_begin(student_list); e != list_end(student_list);
- e = list_next(e))
- {
- struct student *student = list_entry(e, struct student, elem);
- if (strcmp(student->name, name) == 0) {
- printf("Removing student '%s'\n", student->name);
- list_remove(&student->elem);
- free(student->name);
- free(student);
- break;
- }
- }
- }
- free(name);
+ char *name = read_input();
+ if (!name) {
+ printf("Failed to read student name\n");
+ } else {
+ struct list_elem *e;
+ for (e = list_begin(student_list); e != list_end(student_list);
+ e = list_next(e))
+ {
+ struct student *student = list_entry(e, struct student, elem);
+ if (strcmp(student->name, name) == 0) {
+ printf("Removing student '%s'\n", student->name);
+ list_remove(&student->elem);
+ free(student->name);
+ free(student);
+ break;
+ }
+ }
+ }
+ free(name);
}
// Print the entire list.
void list(struct list *student_list) {
- struct list_elem *e;
- for (e = list_begin(student_list); e != list_end(student_list);
- e = list_next(e))
- {
- struct student *student = list_entry(e, struct student, elem);
- printf("Student: %s\n", student->name);
- }
+ struct list_elem *e;
+ for (e = list_begin(student_list); e != list_end(student_list);
+ e = list_next(e))
+ {
+ struct student *student = list_entry(e, struct student, elem);
+ printf("Student: %s\n", student->name);
+ }
}
// Clear the list and deallocate the memory.
void quit(struct list *student_list) {
- struct list_elem *e;
- struct student *student;
- while (!list_empty(student_list)) {
- e = list_pop_front(student_list);
- student = list_entry(e, struct student, elem);
- printf("Removing '%s'\n", student->name);
- free(student->name);
- free(student);
- }
- exit(0);
+ struct list_elem *e;
+ struct student *student;
+ while (!list_empty(student_list)) {
+ e = list_pop_front(student_list);
+ student = list_entry(e, struct student, elem);
+ printf("Removing '%s'\n", student->name);
+ free(student->name);
+ free(student);
+ }
+ exit(0);
}
int main() {
- struct list student_list;
- list_init(&student_list);
- int opt;
+ struct list student_list;
+ list_init(&student_list);
+ int opt;
- do {
- printf("Menu:\n");
- printf("1 - Insert student\n");
- printf("2 - Delete student\n");
- printf("3 - List students\n");
- printf("4 - Exit\n");
- switch (read_int()) {
- case 1:
- {
- insert(&student_list);
- break;
- }
- case 2:
- {
- delete(&student_list);
- break;
- }
- case 3:
- {
- list(&student_list);
- break;
- }
+ do {
+ printf("Menu:\n");
+ printf("1 - Insert student\n");
+ printf("2 - Delete student\n");
+ printf("3 - List students\n");
+ printf("4 - Exit\n");
+ switch (read_int()) {
+ case 1:
+ {
+ insert(&student_list);
+ break;
+ }
+ case 2:
+ {
+ delete(&student_list);
+ break;
+ }
+ case 3:
+ {
+ list(&student_list);
+ break;
+ }
- case 4:
- {
- quit(&student_list);
- break;
- }
- default:
- {
- printf("Quit? (1/0):\n");
- if (read_int())
- quit(&student_list);
- break;
- }
- }
- } while(1);
-
- return 0;
+ case 4:
+ {
+ quit(&student_list);
+ break;
+ }
+ default:
+ {
+ printf("Quit? (1/0):\n");
+ if (read_int())
+ quit(&student_list);
+ break;
+ }
+ }
+ } while(1);
+
+ return 0;
}