mirror of
https://github.com/simh/simh.git
synced 2026-01-11 23:52:58 +00:00
SCP: Expose memory file functions to SCP private code
This commit is contained in:
parent
bcdc992cca
commit
43bc996cdb
31
scp.c
31
scp.c
@ -17007,14 +17007,10 @@ pclose(f);
|
|||||||
return (0 == strcmp(response, "0"));
|
return (0 == strcmp(response, "0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Memory File Support */
|
||||||
|
|
||||||
typedef struct MFILE {
|
int
|
||||||
char *buf;
|
Mprintf (MFILE *f, const char* fmt, ...)
|
||||||
size_t pos;
|
|
||||||
size_t size;
|
|
||||||
} MFILE;
|
|
||||||
|
|
||||||
static int Mprintf (MFILE *f, const char* fmt, ...)
|
|
||||||
{
|
{
|
||||||
va_list arglist;
|
va_list arglist;
|
||||||
int len;
|
int len;
|
||||||
@ -17047,7 +17043,7 @@ static int Mprintf (MFILE *f, const char* fmt, ...)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static MFILE *
|
MFILE *
|
||||||
MOpen (void)
|
MOpen (void)
|
||||||
{
|
{
|
||||||
return (MFILE *)calloc (1, sizeof (MFILE));
|
return (MFILE *)calloc (1, sizeof (MFILE));
|
||||||
@ -17059,7 +17055,7 @@ MFlush (MFILE *f)
|
|||||||
f->pos = 0;
|
f->pos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
int
|
||||||
FMwrite (FILE *fout, MFILE *fdata)
|
FMwrite (FILE *fout, MFILE *fdata)
|
||||||
{
|
{
|
||||||
int ret = fwrite (fdata->buf, 1, fdata->pos, fout);
|
int ret = fwrite (fdata->buf, 1, fdata->pos, fout);
|
||||||
@ -17068,13 +17064,28 @@ MFlush (fdata);
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
MClose (MFILE *f)
|
MClose (MFILE *f)
|
||||||
{
|
{
|
||||||
free (f->buf);
|
free (f->buf);
|
||||||
free (f);
|
free (f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
MFileData (MFILE *f)
|
||||||
|
{
|
||||||
|
char *Data = NULL;
|
||||||
|
|
||||||
|
if (f != NULL) {
|
||||||
|
Data = malloc (f->pos + 1);
|
||||||
|
if (Data != NULL) {
|
||||||
|
memcpy (Data, f->buf, f->pos);
|
||||||
|
Data[f->pos] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Data;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This sanity check walks through the all of simulator's device registers
|
* This sanity check walks through the all of simulator's device registers
|
||||||
* to verify that each contains a reasonable description of a method to
|
* to verify that each contains a reasonable description of a method to
|
||||||
|
|||||||
@ -404,11 +404,27 @@ struct SEND {
|
|||||||
int32 extoff; /* extra offset */
|
int32 extoff; /* extra offset */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Memory File */
|
||||||
|
typedef struct MFILE {
|
||||||
|
char *buf;
|
||||||
|
size_t pos;
|
||||||
|
size_t size;
|
||||||
|
} MFILE;
|
||||||
|
|
||||||
|
|
||||||
/* Private SCP only APIs */
|
/* Private SCP only APIs */
|
||||||
|
|
||||||
t_stat _sim_os_putchar (int32 out);
|
t_stat _sim_os_putchar (int32 out);
|
||||||
t_bool _sim_running_as_root (void);
|
t_bool _sim_running_as_root (void);
|
||||||
|
|
||||||
|
/* Memory File Support */
|
||||||
|
int Mprintf (MFILE *f, const char* fmt, ...) GCC_FMT_ATTR(2, 3);
|
||||||
|
MFILE *MOpen (void);
|
||||||
|
void MFlush (MFILE *f);
|
||||||
|
int FMwrite (FILE *fout, MFILE *fdata);
|
||||||
|
void MClose (MFILE *f);
|
||||||
|
char *MFileData (MFILE *f);
|
||||||
|
|
||||||
|
|
||||||
#endif /* defined(SIM_SCP_PRIVATE_DONT_REPEAT) */
|
#endif /* defined(SIM_SCP_PRIVATE_DONT_REPEAT) */
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user