/* file: wfdbsignals.c G. Moody June 1989
Last revised: 15 November 2011
-------------------------------------------------------------------------------
wfdbdesc: List signals in a WFDB record
Copyright (C) 1989-2011 George B. Moody
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, see .
You may contact the author by e-mail (wfdb@physionet.org) or postal mail
(MIT Room E25-505A, Cambridge, MA 02139 USA). For updates to this software,
please visit PhysioNet (http://www.physionet.org/).
_______________________________________________________________________________
This program is a drastically pruned version of wfdbdesc.
*/
#include
#include
main(argc, argv)
int argc;
char *argv[];
{
char *info, *p, *pname, *prog_name();
int i, msrec = 0, nsig;
FILE *ifile;
WFDB_Siginfo *s;
WFDB_Time t;
pname = prog_name(argv[0]);
if (argc < 2) {
(void)fprintf(stderr, "usage: %s RECORD [-readable]\n", pname);
exit(1);
}
/* Discover the number of signals defined in the header. */
if ((nsig = isigopen(argv[1], NULL, 0)) < 0) exit(2);
/* Allocate storage for nsig signal information structures. */
if (nsig > 0 && (s = malloc(nsig * sizeof(WFDB_Siginfo))) == NULL) {
fprintf(stderr, "%s: insufficient memory\n", pname);
exit(2);
}
/* If the `-readable' option is given, report only on signals which can
be opened. Otherwise, report on all signals named in the header file,
without attempting to open them. */
if (nsig > 0 && argc > 2 &&
strncmp(argv[2], "-readable", strlen(argv[2])) == 0)
nsig = isigopen(argv[1], s, nsig);
else if (nsig > 0)
nsig = isigopen(argv[1], s, -nsig);
for (i = 0; i < nsig; i++)
(void)printf("%s\n", s[i].desc);
exit(0); /*NOTREACHED*/
}
char *prog_name(s)
char *s;
{
char *p = s + strlen(s);
#ifdef MSDOS
while (p >= s && *p != '\\' && *p != ':') {
if (*p == '.')
*p = '\0'; /* strip off extension */
if ('A' <= *p && *p <= 'Z')
*p += 'a' - 'A'; /* convert to lower case */
p--;
}
#else
while (p >= s && *p != '/')
p--;
#endif
return (p+1);
}