mirror of
https://github.com/rcornwell/sims.git
synced 2026-01-13 07:19:26 +00:00
SCP: Updated to current.
This commit is contained in:
parent
bcccbbf38a
commit
6df72b87c0
33
scp.c
33
scp.c
@ -1186,6 +1186,15 @@ static const char simh_help[] =
|
||||
#define HLP_CP "*Commands Copying_Files CP"
|
||||
"3CP\n"
|
||||
"++CP sfile dfile copies a file\n"
|
||||
"2Renaming Files\n"
|
||||
#define HLP_RENAME "*Commands Renaming_Files RENAME"
|
||||
"3RENAME\n"
|
||||
"++RENAME origname newname renames a file\n"
|
||||
#define HLP_MOVE "*Commands Renaming_Files MOVE"
|
||||
"3MOVE\n"
|
||||
"++MOVE origname newname renames a file\n"
|
||||
"+or\n"
|
||||
"++MV origname newname renames a file\n"
|
||||
"2Creating Directories\n"
|
||||
#define HLP_MKDIR "*Commands Creating_Directories MKDIR"
|
||||
"3MKDIR\n"
|
||||
@ -2344,6 +2353,9 @@ static CTAB cmd_table[] = {
|
||||
{ "RM", &delete_cmd, 0, HLP_RM, NULL, NULL },
|
||||
{ "COPY", ©_cmd, 0, HLP_COPY, NULL, NULL },
|
||||
{ "CP", ©_cmd, 0, HLP_CP, NULL, NULL },
|
||||
{ "RENAME", &rename_cmd, 0, HLP_RENAME, NULL, NULL },
|
||||
{ "MOVE", &rename_cmd, 0, HLP_MOVE, NULL, NULL },
|
||||
{ "MV", &rename_cmd, 0, HLP_MOVE, NULL, NULL },
|
||||
{ "MKDIR", &mkdir_cmd, 0, HLP_MKDIR, NULL, NULL },
|
||||
{ "RMDIR", &rmdir_cmd, 0, HLP_RMDIR, NULL, NULL },
|
||||
{ "SET", &set_cmd, 0, HLP_SET, NULL, NULL },
|
||||
@ -6574,6 +6586,21 @@ if ((stat == SCPE_OK) && (copy_state.count))
|
||||
return copy_state.stat;
|
||||
}
|
||||
|
||||
t_stat rename_cmd (int32 flg, CONST char *cptr)
|
||||
{
|
||||
char sname[CBUFSIZE], dname[CBUFSIZE];
|
||||
|
||||
if ((!cptr) || (*cptr == 0))
|
||||
return SCPE_2FARG;
|
||||
cptr = get_glyph_quoted (cptr, sname, 0);
|
||||
if ((!cptr) || (*cptr == 0))
|
||||
return SCPE_2FARG;
|
||||
cptr = get_glyph_quoted (cptr, dname, 0);
|
||||
if (0 == rename (sname, dname))
|
||||
return SCPE_OK;
|
||||
return sim_messagef (SCPE_ARG, "Can't rename '%s' to '%s': %s\n\n", sname, dname, strerror (errno));
|
||||
}
|
||||
|
||||
t_stat mkdir_cmd (int32 flg, CONST char *cptr)
|
||||
{
|
||||
char path[CBUFSIZE];
|
||||
@ -7325,8 +7352,10 @@ if (*cptr == 0) /* must be more */
|
||||
gbuf[sizeof(gbuf)-1] = '\0';
|
||||
strlcpy (gbuf, cptr, sizeof(gbuf));
|
||||
sim_trim_endspc (gbuf);
|
||||
if ((sfile = sim_fopen (gbuf, "wb")) == NULL)
|
||||
if ((sfile = sim_fopen (gbuf, "r+b")) == NULL) { /* try existing file */
|
||||
if ((sfile = sim_fopen (gbuf, "wb")) == NULL) /* create new empty file */
|
||||
return SCPE_OPENERR;
|
||||
}
|
||||
r = sim_save (sfile);
|
||||
fclose (sfile);
|
||||
return r;
|
||||
@ -7463,6 +7492,8 @@ for (i = 0; i < (device_count + sim_internal_device_count); i++) {/* loop thru d
|
||||
fputc ('\n', sfile); /* end registers */
|
||||
}
|
||||
fputc ('\n', sfile); /* end devices */
|
||||
if (!ferror (sfile))
|
||||
sim_set_fsize (sfile, (t_addr)sim_ftell (sfile)); /* truncate the save file */
|
||||
return (ferror (sfile))? SCPE_IOERR: SCPE_OK; /* error during save? */
|
||||
}
|
||||
|
||||
|
||||
1
scp.h
1
scp.h
@ -95,6 +95,7 @@ t_stat dir_cmd (int32 flg, CONST char *cptr);
|
||||
t_stat type_cmd (int32 flg, CONST char *cptr);
|
||||
t_stat delete_cmd (int32 flg, CONST char *cptr);
|
||||
t_stat copy_cmd (int32 flg, CONST char *cptr);
|
||||
t_stat rename_cmd (int32 flg, CONST char *cptr);
|
||||
t_stat mkdir_cmd (int32 flg, CONST char *cptr);
|
||||
t_stat rmdir_cmd (int32 flg, CONST char *cptr);
|
||||
t_stat brk_cmd (int32 flag, CONST char *ptr);
|
||||
|
||||
@ -1123,7 +1123,7 @@ t_seccnt sects_read;
|
||||
if ((dptr = find_dev_from_unit (uptr)) == NULL)
|
||||
return ret_val;
|
||||
saved_capac = uptr->capac;
|
||||
uptr->capac = temp_capac;
|
||||
uptr->capac = (t_addr)temp_capac;
|
||||
if ((sim_disk_rdsect (uptr, 512 / ctx->sector_size, (uint8 *)&Home, §s_read, sizeof (Home) / ctx->sector_size)) ||
|
||||
(sects_read != (sizeof (Home) / ctx->sector_size)))
|
||||
goto Return_Cleanup;
|
||||
|
||||
@ -3274,9 +3274,11 @@ tape_size = (t_addr)sim_fsize (uptr->fileref);
|
||||
sim_debug_unit (MTSE_DBG_STR, uptr, "tpc_map: tape_size: %" T_ADDR_FMT "u\n", tape_size);
|
||||
for (objc = 0, sizec = 0, tpos = 0;; ) {
|
||||
(void)sim_tape_seek (uptr, tpos);
|
||||
i = sim_fread (&bc, sizeof (t_tpclnt), 1, uptr->fileref);
|
||||
i = sim_fread (&bc, sizeof (bc), 1, uptr->fileref);
|
||||
if (i == 0) /* past or at eof? */
|
||||
break;
|
||||
if (bc > 65535) /* Range check length value to satisfy Coverity */
|
||||
break;
|
||||
if (countmap[bc] == 0)
|
||||
sizec++;
|
||||
++countmap[bc];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user