15,440
社区成员
发帖
与我相关
我的任务
分享
/***************************************************************************
* msr_writemseed:
*
* Pack MSRecord data into Mini-SEED record(s) by calling msr_pack() and
* write to a specified file.
*
* Returns the number of records written on success and -1 on error.
***************************************************************************/
msr_writemseed (MSRecord *msr, const char *msfile, flag overwrite,
int reclen, flag encoding, flag byteorder, flag verbose)
{
FILE *ofp;
char srcname[50];
char *perms = (overwrite) ? "wb" : "ab";
int packedrecords = 0;
if (!msr || !msfile)
return -1;
/* Open output file or use stdout */
if (strcmp (msfile, "-") == 0)
{
ofp = stdout;
}
else if ((ofp = fopen (msfile, perms)) == NULL)
{
ms_log (1, "Cannot open output file %s: %s\n", msfile, strerror (errno));
return -1;
}
/* Pack the MSRecord */
if (msr->numsamples > 0)
{
msr->encoding = encoding;
msr->reclen = reclen;
msr->byteorder = byteorder;
packedrecords = msr_pack (msr, &ms_record_handler_int, ofp, NULL, 1, verbose - 1);
if (packedrecords < 0)
{
msr_srcname (msr, srcname, 1);
ms_log (1, "Cannot write Mini-SEED for %s\n", srcname);
}
}
/* Close file and return record count */
fclose (ofp);
return (packedrecords >= 0) ? packedrecords : -1;
} /* End of msr_writemseed() */