-static int atoin (const char *buf, int n)
-{
- int val = 0;
- while (--n >= 0)
- {
- if (isdigit(*buf))
- val = val*10 + (*buf - '0');
- buf++;
- }
- return val;
-}
-
-/* read one MARC record from a file */
-char *marc_read(FILE *inf, ODR odr)
-{
- char length_str[5];
- size_t size;
- char *buf;
-
- if (fread (length_str, 1, 5, inf) != 5)
- return NULL;
- size = atoin (length_str, 5);
- if (size <= 6)
- return NULL;
- if (!(buf = (char*) odr_malloc (odr, size+1)))
- return NULL;
- if (fread (buf+5, 1, size-5, inf) != (size-5))
- {
- xfree (buf);
- return NULL;
- }
- memcpy (buf, length_str, 5);
- buf[size] = '\0';
- return buf;
-}
-