- for (mp = mtab; mp < &mtab[NMOUNT]; mp++) {
- if (mp->file[0] == 0) {
- for (np = mp->spec; np < &mp->spec[NAMSIZ-1];)
- if ((*np++ = *spec++) == 0)
- spec--;
- for (np = mp->file; np < &mp->file[NAMSIZ-1];)
- if ((*np++ = *name++) == 0)
- name--;
- mp = &mtab[NMOUNT];
- while ((--mp)->file[0] == 0);
- mf = creat("/etc/mtab", 0644);
- write(mf, (char *)mtab, (mp-mtab+1)*2*NAMSIZ);
- return(0);
- }
- }
- return(0);
+ for (mp = mtab; mp < &mtab[NMOUNT]; mp++)
+ if (!strcmp(mp->spec, spec))
+ goto replace;
+ for (mp = mtab; mp < &mtab[NMOUNT]; mp++)
+ if (mp->file[0] == 0)
+ goto replace;
+ return;
+replace:
+ for (np = mp->spec; np < &mp->spec[NAMSIZ-1];)
+ if ((*np++ = *spec++) == 0)
+ spec--;
+ for (np = mp->file; np < &mp->file[NAMSIZ-1];)
+ if ((*np++ = *name++) == 0)
+ name--;
+ mp = &mtab[NMOUNT];
+ while ((--mp)->file[0] == 0);
+ mf = creat("/etc/mtab", 0644);
+ write(mf, (char *)mtab, (mp-mtab+1)*2*NAMSIZ);
+ close(mf);
+ return;