1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#define nil NULL
typedef unsigned char uchar;
typedef long long vlong;
typedef unsigned int uint;
typedef unsigned long ulong;
typedef unsigned long long uvlong;
typedef uint32_t u32int;
typedef struct sockaddr sockaddr;
typedef struct sockaddr_in sockaddr_in;
typedef struct dirent dirent;
typedef struct Movie Movie;
typedef struct Multipart Multipart;
typedef struct Part Part;
typedef struct Series Series;
typedef struct Season Season;
typedef struct Episode Episode;
typedef struct Resource Resource;
typedef struct Index Index;
struct Movie {
char *release; /* release date */
int hassynopsis; /* is there a synopsis, */
int hascover; /* cover, */
int hasvideo; /* video, */
int hashistory; /* or history file? */
char **subs; /* list of subtitle languages */
int nsub;
char **dubs; /* list of revoicing languages */
int ndub;
char **extras; /* list of extra content */
int nextra;
char **remakes; /* list of remake years */
int nremake;
};
struct Multipart {
char *release; /* release date */
int hassynopsis; /* is there a synopsis, */
int hascover; /* cover, */
int hashistory; /* or history file? */
Part *part0; /* list of parts */
char **extras; /* list of extra content */
int nextra;
char **remakes; /* list of remake years */
int nremake;
};
struct Part {
int no; /* part number */
char **subs; /* list of subtitle languages */
int nsub;
char **dubs; /* list of revoicing languages */
int ndub;
Part *next;
};
struct Series {
int hassynopsis; /* is there a synopsis, */
int hascover; /* cover, */
int hashistory; /* or history file? */
Season *s; /* list of seasons */
char **extras; /* list of extra content */
int nextra;
char **remakes; /* list of remake years */
int nremake;
};
struct Season {
char *release; /* release date */
int no; /* season number */
Episode *pilot; /* list of episodes */
Season *next;
};
struct Episode {
int no; /* episode number */
int hasvideo; /* is there a video file? */
char **subs; /* list of subtitle languages */
int nsub;
char **dubs; /* list of revoicing languages */
int ndub;
Episode *next;
};
enum {
Rmovie,
Rmulti,
Rserie,
Runknown
};
struct Resource {
char *title;
int type;
void *media;
/* this union will disappear soon */
union {
Movie movie;
Multipart multi;
Series serie;
};
Resource *next;
};
enum {
INDEXSIZE = 67,
};
struct Index {
pthread_rwlock_t lock;
Resource *rtab[INDEXSIZE];
};
typedef struct Req Req;
typedef struct HField HField;
struct Req {
char *method, *target, *version;
int status;
HField *headers;
};
struct HField {
char *key, *value;
HField *next;
};
|