/* HTS_get_token_with_separator: get token from file pointer with specified separator */ HTS_Boolean HTS_get_token_from_fp_with_separator(HTS_File * fp, char *buff, char separator) { char c; size_t i; if (fp == NULL || HTS_feof(fp)) return FALSE; c = HTS_fgetc(fp); while (c == separator) { if (HTS_feof(fp)) return FALSE; c = HTS_fgetc(fp); if (c == EOF) return FALSE; } for (i = 0; c != separator;) { buff[i++] = c; if (HTS_feof(fp)) break; c = HTS_fgetc(fp); if (c == EOF) break; } buff[i] = '\0'; return TRUE; }
/* HTS_get_token: get token from file pointer (separators are space, tab, and line break) */ HTS_Boolean HTS_get_token_from_fp(HTS_File * fp, char *buff) { char c; size_t i; if (fp == NULL || HTS_feof(fp)) return FALSE; c = HTS_fgetc(fp); while (c == ' ' || c == '\n' || c == '\t') { if (HTS_feof(fp)) return FALSE; c = HTS_fgetc(fp); if (c == EOF) return FALSE; } for (i = 0; c != ' ' && c != '\n' && c != '\t';) { buff[i++] = c; if (HTS_feof(fp)) break; c = HTS_fgetc(fp); if (c == EOF) break; } buff[i] = '\0'; return TRUE; }
/* HTS_get_pattern_token: get pattern token */ HTS_Boolean HTS_get_pattern_token(HTS_File * fp, char *buff) { char c; int i; HTS_Boolean squote = FALSE, dquote = FALSE; if (fp == NULL || HTS_feof(fp)) return FALSE; c = HTS_fgetc(fp); while (c == ' ' || c == '\n') { if (HTS_feof(fp)) return FALSE; c = HTS_fgetc(fp); } if (c == '\'') { /* single quote case */ if (HTS_feof(fp)) return FALSE; c = HTS_fgetc(fp); squote = TRUE; } if (c == '\"') { /*double quote case */ if (HTS_feof(fp)) return FALSE; c = HTS_fgetc(fp); dquote = TRUE; } if (c == ',') { /*special character ',' */ strcpy(buff, ","); return TRUE; } i = 0; while (1) { buff[i++] = c; c = HTS_fgetc(fp); if (squote && c == '\'') break; if (dquote && c == '\"') break; if (!squote && !dquote) { if (c == ' ') break; if (c == '\n') break; if (HTS_feof(fp)) break; } } buff[i] = '\0'; return TRUE; }