#include <stdinc.h>mstr *mstr_init(string template)stream mstr_open(mstr *mp, string mode)void mstr_close(mstr *mp)int mstr_count(mstr *mp)int mstr_multi(mstr *mp) Descriptionmstr_init() returns a structure that is used to aid in writing to a set of related files whose name is derived from a template and embedded integer counter. The argument is a string which can optionally contain a template in the form of a printf(3) style string in which an integer is used to derive a variable name, e.g. run%03d.dat. This call will also open the first (or only, if no template is used) file for writing. mstr_open will however have to be used to get a stream in order to write actual data (see example below). mstr_open() returns the stream (see stropen(3NEMO)) to the next file. It also closes the previously opened stream, if there was such one. mstr_close() closes access to an mstr and free’s all allocated memory associated with it. mstr_count() returns the number of previous calls to mstr_open. mstr_multi() returns if multiple files will be used in mstr_open (currently set by checking for the existence of the % character in the filename. Example mstr *mp = mstr_init("test%03d.dat"); for (int i=0; i<10; i++) { stream ostr = mstr_open(mp,"w"); fprintf(ostr,"Hello world, i=%d\n",i); } mstr_close(mp);
~/src/kernel/io mstropen.c
8-may-2002 created, on Amtrak Peter 14-sep-2002 added mstr_count,mode Peter