poparser.h 690 B

123456789101112131415161718192021222324252627282930313233343536
  1. #ifndef POPARSER_H
  2. #define POPARSER_H
  3. #include <unistd.h>
  4. enum po_entry {
  5. pe_msgid = 0,
  6. pe_msgstr,
  7. pe_maxstr,
  8. pe_str = pe_maxstr,
  9. pe_invalid,
  10. pe_max,
  11. };
  12. struct po_info {
  13. enum po_entry type;
  14. char *text;
  15. size_t textlen;
  16. };
  17. typedef int (*poparser_callback)(struct po_info* info, void* user);
  18. struct po_parser {
  19. struct po_info info;
  20. char *buf;
  21. size_t bufsize;
  22. enum po_entry prev_type;
  23. unsigned curr_len;
  24. poparser_callback cb;
  25. void *cbdata;
  26. };
  27. void poparser_init(struct po_parser *p, char* workbuf, size_t bufsize, poparser_callback cb, void* cbdata);
  28. int poparser_feed_line(struct po_parser *p, char* line, size_t buflen);
  29. int poparser_finish(struct po_parser *p);
  30. #endif