]> git.zerfleddert.de Git - record-dvb/blob - common.c
97ec8073e93d681e7101abf6669f9dbb5af0a331
[record-dvb] / common.c
1 #include <strings.h>
2 #include <string.h>
3 #include <stdio.h>
4 #include <stdlib.h>
5
6 #include "common.h"
7
8 struct dvb_host *parse(char *urlpart, char *defport)
9 {
10 struct dvb_host *dvbhost;
11 char *pos;
12
13 if (!(dvbhost = malloc(sizeof(struct dvb_host)))) {
14 perror("malloc");
15 exit(EXIT_FAILURE);
16 }
17
18 bzero(dvbhost, sizeof(struct dvb_host));
19
20 if (!(dvbhost->hostname = strdup(urlpart))) {
21 perror("strdup");
22 exit(EXIT_FAILURE);
23 }
24
25 /* Unneded, but better readablity: */
26 dvbhost->location = NULL;
27 dvbhost->port = NULL;
28
29 pos = dvbhost->hostname;
30
31 while(*pos != '\0' && *pos != ':' && *pos != '/')
32 pos++;
33
34 if (*pos == '/')
35 dvbhost->location = pos + 1;
36
37 if (*pos == ':')
38 dvbhost->port = pos + 1;
39
40 *pos = 0;
41
42 if (dvbhost->port) {
43 pos++;
44
45 while(*pos != '\0' && *pos != '/')
46 pos ++;
47
48 if(*pos == '/')
49 dvbhost->location = pos + 1;
50
51 *pos = 0;
52 }
53
54 if (!dvbhost->port)
55 dvbhost->port = strdup(defport);
56
57 if (!dvbhost->location)
58 if(!(dvbhost->location = strdup(""))) {
59 perror("strdup");
60 exit(EXIT_FAILURE);
61 }
62
63 return dvbhost;
64 }
Impressum, Datenschutz