Introduction
Introduction Statistics Contact Development Disclaimer Help
util.h - sfeed - RSS and Atom parser
git clone git://git.codemadness.org/sfeed
Log
Files
Refs
README
LICENSE
---
util.h (2334B)
---
1 #include <stdio.h>
2 #include <time.h>
3
4 #ifdef __OpenBSD__
5 #include <unistd.h>
6 #else
7 #define pledge(p1,p2) 0
8 #define unveil(p1,p2) 0
9 #endif
10
11 /* ctype-like macros, but always compatible with ASCII / UTF-8 */
12 #define ISALPHA(c) ((((unsigned)c) | 32) - 'a' < 26)
13 #define ISCNTRL(c) ((c) < ' ' || (c) == 0x7f)
14 #define ISDIGIT(c) (((unsigned)c) - '0' < 10)
15 #define ISSPACE(c) ((c) == ' ' || ((((unsigned)c) - '\t') < 5))
16 #define TOLOWER(c) ((((unsigned)c) - 'A' < 26) ? ((c) | 32) : (c))
17
18 #undef strcasestr
19 char *strcasestr(const char *, const char *);
20 #undef strlcat
21 size_t strlcat(char *, const char *, size_t);
22 #undef strlcpy
23 size_t strlcpy(char *, const char *, size_t);
24
25 #ifndef SFEED_DUMBTERM
26 #define PAD_TRUNCATE_SYMBOL "\xe2\x80\xa6" /* symbol: "ellipsis" */
27 #define UTF_INVALID_SYMBOL "\xef\xbf\xbd" /* symbol: "replacement" */
28 #else
29 #define PAD_TRUNCATE_SYMBOL "."
30 #define UTF_INVALID_SYMBOL "?"
31 #endif
32
33 /* feed info */
34 struct feed {
35 char *name; /* feed name */
36 unsigned long totalnew; /* amount of new items per feed */
37 unsigned long total; /* total items */
38 /* sfeed_curses */
39 char *path; /* path to feed or NULL for stdin */
40 FILE *fp; /* file pointer */
41 };
42
43 /* URI */
44 struct uri {
45 char proto[48]; /* scheme including ":" or "://" */
46 char userinfo[256]; /* username [:password] */
47 char host[256];
48 char port[6]; /* numeric port */
49 char path[1024];
50 char query[1024];
51 char fragment[1024];
52 };
53
54 enum {
55 FieldUnixTimestamp = 0, FieldTitle, FieldLink, FieldContent,
56 FieldContentType, FieldId, FieldAuthor, FieldEnclosure, FieldCat…
57 FieldLast
58 };
59
60 /* hint for compilers and static analyzers that a function does not retu…
61 * some compilers use: __attribute__((noreturn)), _Noreturn, noreturn */
62 #ifndef __dead
63 #define __dead
64 #endif
65
66 __dead void err(int, const char *, ...);
67 __dead void errx(int, const char *, ...);
68
69 int uri_format(char *, size_t, struct uri *);
70 int uri_hasscheme(const char *);
71 int uri_makeabs(struct uri *, struct uri *, struct uri *);
72 int uri_parse(const char *, struct uri *);
73
74 void checkfileerror(FILE *, const char *, int);
75 time_t getcomparetime(void);
76 void parseline(char *, char *[FieldLast]);
77 void printutf8pad(FILE *, const char *, size_t, int);
78 int strtotime(const char *, time_t *);
79 void xmlencode(const char *, FILE *);
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.