Added a -N switch to the standard attach_unit routine to force a new file to be created.
This commit is contained in:
parent
958ce00b2e
commit
d1db9ce203
2 changed files with 34 additions and 24 deletions
BIN
doc/simh_doc.doc
BIN
doc/simh_doc.doc
Binary file not shown.
58
scp.c
58
scp.c
|
@ -3394,33 +3394,43 @@ if (sim_switches & SWMASK ('R')) { /* read only? */
|
|||
if (!sim_quiet)
|
||||
printf ("%s: unit is read only\n", sim_dname (dptr));
|
||||
}
|
||||
else { /* normal */
|
||||
uptr->fileref = sim_fopen (cptr, "rb+"); /* open r/w */
|
||||
if (uptr->fileref == NULL) { /* open fail? */
|
||||
else {
|
||||
if (sim_switches & SWMASK ('N')) { /* new file only? */
|
||||
uptr->fileref = sim_fopen (cptr, "wb+"); /* open new file */
|
||||
if (uptr->fileref == NULL) /* open fail? */
|
||||
return attach_err (uptr, SCPE_OPENERR); /* yes, error */
|
||||
if (!sim_quiet)
|
||||
printf ("%s: creating new file\n", sim_dname (dptr));
|
||||
}
|
||||
else { /* normal */
|
||||
uptr->fileref = sim_fopen (cptr, "rb+"); /* open r/w */
|
||||
if (uptr->fileref == NULL) { /* open fail? */
|
||||
#if defined(EPERM)
|
||||
if ((errno == EROFS) || (errno == EACCES) || (errno == EPERM)) {/* read only? */
|
||||
if ((errno == EROFS) || (errno == EACCES) || (errno == EPERM)) {/* read only? */
|
||||
#else
|
||||
if ((errno == EROFS) || (errno == EACCES)) { /* read only? */
|
||||
if ((errno == EROFS) || (errno == EACCES)) {/* read only? */
|
||||
#endif
|
||||
if ((uptr->flags & UNIT_ROABLE) == 0) /* allowed? */
|
||||
return attach_err (uptr, SCPE_NORO); /* no error */
|
||||
uptr->fileref = sim_fopen (cptr, "rb"); /* open rd only */
|
||||
if (uptr->fileref == NULL) /* open fail? */
|
||||
return attach_err (uptr, SCPE_OPENERR); /* yes, error */
|
||||
uptr->flags = uptr->flags | UNIT_RO; /* set rd only */
|
||||
if (!sim_quiet)
|
||||
printf ("%s: unit is read only\n", sim_dname (dptr));
|
||||
}
|
||||
else { /* doesn't exist */
|
||||
if (sim_switches & SWMASK ('E')) /* must exist? */
|
||||
return attach_err (uptr, SCPE_OPENERR); /* yes, error */
|
||||
uptr->fileref = sim_fopen (cptr, "wb+"); /* open new file */
|
||||
if (uptr->fileref == NULL) /* open fail? */
|
||||
return attach_err (uptr, SCPE_OPENERR); /* yes, error */
|
||||
if (!sim_quiet) printf ("%s: creating new file\n", sim_dname (dptr));
|
||||
}
|
||||
} /* end if null */
|
||||
} /* end else */
|
||||
if ((uptr->flags & UNIT_ROABLE) == 0) /* allowed? */
|
||||
return attach_err (uptr, SCPE_NORO);/* no error */
|
||||
uptr->fileref = sim_fopen (cptr, "rb"); /* open rd only */
|
||||
if (uptr->fileref == NULL) /* open fail? */
|
||||
return attach_err (uptr, SCPE_OPENERR); /* yes, error */
|
||||
uptr->flags = uptr->flags | UNIT_RO; /* set rd only */
|
||||
if (!sim_quiet)
|
||||
printf ("%s: unit is read only\n", sim_dname (dptr));
|
||||
}
|
||||
else { /* doesn't exist */
|
||||
if (sim_switches & SWMASK ('E')) /* must exist? */
|
||||
return attach_err (uptr, SCPE_OPENERR); /* yes, error */
|
||||
uptr->fileref = sim_fopen (cptr, "wb+");/* open new file */
|
||||
if (uptr->fileref == NULL) /* open fail? */
|
||||
return attach_err (uptr, SCPE_OPENERR); /* yes, error */
|
||||
if (!sim_quiet)
|
||||
printf ("%s: creating new file\n", sim_dname (dptr));
|
||||
}
|
||||
} /* end if null */
|
||||
} /* end else */
|
||||
}
|
||||
if (uptr->flags & UNIT_BUFABLE) { /* buffer? */
|
||||
uint32 cap = ((uint32) uptr->capac) / dptr->aincr; /* effective size */
|
||||
if (uptr->flags & UNIT_MUSTBUF) /* dyn alloc? */
|
||||
|
|
Loading…
Add table
Reference in a new issue