- char *cp;
- char *head;
-
- do
- {
- char *end_ptr;
-
- if (fgets (buffer, bufsiz, stream) == NULL)
- {
- return NULL;
- }
-
- end_ptr = strchr (buffer, '\n');
- if (end_ptr != NULL) /* chop newline */
- *end_ptr = '\0';
- else
- {
- /* Not the whole line was read. Do it now but forget it. */
- char tmp[1024];
- while (fgets (tmp, sizeof tmp, stream) != NULL)
- if (strchr (tmp, '\n') != NULL)
- break;
- }
-
- head = buffer + strspn (buffer, " \t");
- /* skip empty lines and comment lines: */
- }
- while (head[0] == '\0' || head[0] == '#');
-
- cp = strsep (&head, " \t");
- mp->mnt_fsname = cp != NULL ? decode_name (cp) : (char *) "";
- if (head)
- head += strspn (head, " \t");
- cp = strsep (&head, " \t");
- mp->mnt_dir = cp != NULL ? decode_name (cp) : (char *) "";
- if (head)
- head += strspn (head, " \t");
- cp = strsep (&head, " \t");
- mp->mnt_type = cp != NULL ? decode_name (cp) : (char *) "";
- if (head)
- head += strspn (head, " \t");
- cp = strsep (&head, " \t");
- mp->mnt_opts = cp != NULL ? decode_name (cp) : (char *) "";
- switch (head ? sscanf (head, " %d %d ", &mp->mnt_freq, &mp->mnt_passno) : 0)
- {
- case 0:
- mp->mnt_freq = 0;
- case 1:
- mp->mnt_passno = 0;
- case 2:
- break;
- }
-
- return mp;
+ char *cp;
+ char *head;
+
+ do {
+ char *end_ptr;
+
+ if (!fgets(buffer, bufsiz, stream))
+ return NULL;
+
+ end_ptr = strchr(buffer, '\n');
+ if (end_ptr != NULL) {
+ /* chop newline */
+ *end_ptr = '\0';
+ } else {
+ /* Not the whole line was read. Do it now but forget it. */
+ char tmp[1024] = {0};
+
+ while (fgets(tmp, sizeof tmp, stream))
+ if (strchr(tmp, '\n') != NULL)
+ break;
+ }
+
+ head = buffer + strspn(buffer, " \t");
+ /* skip empty lines and comment lines: */
+ } while (head[0] == '\0' || head[0] == '#');
+
+ cp = strsep(&head, " \t");
+ mp->mnt_fsname = cp ? decode_name(cp) : (char *)"";
+ if (head)
+ head += strspn(head, " \t");
+
+ cp = strsep(&head, " \t");
+ mp->mnt_dir = cp ? decode_name(cp) : (char *)"";
+ if (head)
+ head += strspn(head, " \t");
+
+ cp = strsep(&head, " \t");
+ mp->mnt_type = cp ? decode_name(cp) : (char *)"";
+ if (head)
+ head += strspn(head, " \t");
+
+ cp = strsep(&head, " \t");
+ mp->mnt_opts = cp ? decode_name(cp) : (char *)"";
+ if (head) {
+ int ret = sscanf(head, " %d %d ", &mp->mnt_freq, &mp->mnt_passno);
+
+ switch (ret) {
+ case 0:
+ mp->mnt_freq = 0;
+ case 1:
+ mp->mnt_passno = 0;
+ case 2:
+ break;
+ }
+ } else {
+ mp->mnt_freq = 0;
+ }
+
+ return mp;