|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 1614 (0x64e) Types: TextFile Names: »str2vec.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/compat/str2vec.c«
/* str2vec.c - string to vector */ #ifndef lint static char *rcsid = "$Header: /f/osi/compat/RCS/str2vec.c,v 7.0 89/11/23 21:23:39 mrose Rel $"; #endif /* * $Header: /f/osi/compat/RCS/str2vec.c,v 7.0 89/11/23 21:23:39 mrose Rel $ * * * $Log: str2vec.c,v $ * Revision 7.0 89/11/23 21:23:39 mrose * Release 6.0 * */ /* * NOTICE * * Acquisition, use, and distribution of this module and related * materials are subject to the restrictions of a license agreement. * Consult the Preface in the User's Manual for the full terms of * this agreement. * */ /* LINTLIBRARY */ #include <ctype.h> #include <stdio.h> #include "general.h" #include "manifest.h" #define QUOTE '\\' /* \f */ int str2vecX (s, vec, nmask, mask, brk) register char *s, **vec, brk; int nmask, *mask; { register int i; if (mask) *mask = 0; for (i = 0; i <= NVEC;) { vec[i] = NULL; if (brk) { if (i > 0 && *s == brk) *s++ = NULL; } else while (isspace (*s) || *s == ',') *s++ = NULL; if (*s == NULL) break; if (*s == '"') { if (i < nmask) *mask |= 1 << i; for (vec[i++] = ++s; *s != NULL && *s != '"'; s++) if (*s == QUOTE) { if (*++s == '"') (void) strcpy (s - 1, s); s--; } if (*s == '"') *s++ = NULL; continue; } if (*s == QUOTE && *++s != '"') s--; vec[i++] = s; if (brk) { if (*s != brk) for (s++; *s != NULL && *s != brk; s++) continue; } else for (s++; *s != NULL && !isspace (*s) && *s != ','; s++) continue; } vec[i] = NULL; return i; }