summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/utils.c126
-rw-r--r--common/utils.h70
2 files changed, 0 insertions, 196 deletions
diff --git a/common/utils.c b/common/utils.c
deleted file mode 100644
index 0096907..0000000
--- a/common/utils.c
+++ /dev/null
@@ -1,126 +0,0 @@
1/*
2 usbmuxd - iPhone/iPod Touch USB multiplex server daemon
3
4Copyright (C) 2009 Hector Martin "marcan" <hector@marcansoft.com>
5Copyright (C) 2009 Nikias Bassen <nikias@gmx.li>
6
7This library is free software; you can redistribute it and/or modify
8it under the terms of the GNU Lesser General Public License as
9published by the Free Software Foundation, either version 2.1 of the
10License, or (at your option) any later version.
11
12This library is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU Lesser General Public
18License along with this program; if not, write to the Free Software
19Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
21*/
22
23#ifdef HAVE_CONFIG_H
24#include <config.h>
25#endif
26
27#include <stdlib.h>
28#include <string.h>
29#include <stdio.h>
30#include "utils.h"
31
32#ifdef USBMUXD_DAEMON
33# include "log.h"
34# define util_error(...) usbmuxd_log(LL_ERROR, __VA_ARGS__)
35#else
36# define util_error(...) fprintf(stderr, __VA_ARGS__)
37#endif
38
39#ifdef USBMUXD_DAEMON
40void fdlist_create(struct fdlist *list)
41{
42 list->count = 0;
43 list->capacity = 4;
44 list->owners = malloc(sizeof(*list->owners) * list->capacity);
45 list->fds = malloc(sizeof(*list->fds) * list->capacity);
46}
47void fdlist_add(struct fdlist *list, enum fdowner owner, int fd, short events)
48{
49 if(list->count == list->capacity) {
50 list->capacity *= 2;
51 list->owners = realloc(list->owners, sizeof(*list->owners) * list->capacity);
52 list->fds = realloc(list->fds, sizeof(*list->fds) * list->capacity);
53 }
54 list->owners[list->count] = owner;
55 list->fds[list->count].fd = fd;
56 list->fds[list->count].events = events;
57 list->fds[list->count].revents = 0;
58 list->count++;
59}
60
61void fdlist_free(struct fdlist *list)
62{
63 list->count = 0;
64 list->capacity = 0;
65 free(list->owners);
66 list->owners = NULL;
67 free(list->fds);
68 list->fds = NULL;
69}
70
71void fdlist_reset(struct fdlist *list)
72{
73 list->count = 0;
74}
75#endif
76
77void collection_init(struct collection *col)
78{
79 col->list = malloc(sizeof(void *));
80 memset(col->list, 0, sizeof(void *));
81 col->capacity = 1;
82}
83
84void collection_free(struct collection *col)
85{
86 free(col->list);
87 col->list = NULL;
88 col->capacity = 0;
89}
90
91void collection_add(struct collection *col, void *element)
92{
93 int i;
94 for(i=0; i<col->capacity; i++) {
95 if(!col->list[i]) {
96 col->list[i] = element;
97 return;
98 }
99 }
100 col->list = realloc(col->list, sizeof(void*) * col->capacity * 2);
101 memset(&col->list[col->capacity], 0, sizeof(void *) * col->capacity);
102 col->list[col->capacity] = element;
103 col->capacity *= 2;
104}
105
106void collection_remove(struct collection *col, void *element)
107{
108 int i;
109 for(i=0; i<col->capacity; i++) {
110 if(col->list[i] == element) {
111 col->list[i] = NULL;
112 return;
113 }
114 }
115 util_error("collection_remove: element %p not present in collection %p (cap %d)", element, col, col->capacity);
116}
117
118int collection_count(struct collection *col)
119{
120 int i, cnt = 0;
121 for(i=0; i<col->capacity; i++) {
122 if(col->list[i])
123 cnt++;
124 }
125 return cnt;
126}
diff --git a/common/utils.h b/common/utils.h
deleted file mode 100644
index 0addb46..0000000
--- a/common/utils.h
+++ /dev/null
@@ -1,70 +0,0 @@
1/*
2 usbmuxd - iPhone/iPod Touch USB multiplex server daemon
3
4Copyright (C) 2009 Hector Martin "marcan" <hector@marcansoft.com>
5Copyright (C) 2009 Nikias Bassen <nikias@gmx.li>
6
7This library is free software; you can redistribute it and/or modify
8it under the terms of the GNU Lesser General Public License as
9published by the Free Software Foundation, either version 2.1 of the
10License, or (at your option) any later version.
11
12This library is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU Lesser General Public
18License along with this program; if not, write to the Free Software
19Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
21*/
22
23#ifndef __UTILS_H__
24#define __UTILS_H__
25
26#ifdef USBMUXD_DAEMON
27#include <poll.h>
28
29enum fdowner {
30 FD_LISTEN,
31 FD_CLIENT,
32 FD_USB
33};
34
35struct fdlist {
36 int count;
37 int capacity;
38 enum fdowner *owners;
39 struct pollfd *fds;
40};
41
42void fdlist_create(struct fdlist *list);
43void fdlist_add(struct fdlist *list, enum fdowner owner, int fd, short events);
44void fdlist_free(struct fdlist *list);
45void fdlist_reset(struct fdlist *list);
46#endif
47
48struct collection {
49 void **list;
50 int capacity;
51};
52
53void collection_init(struct collection *col);
54void collection_add(struct collection *col, void *element);
55void collection_remove(struct collection *col, void *element);
56int collection_count(struct collection *col);
57void collection_free(struct collection *col);
58
59#define FOREACH(var, col) \
60 do { \
61 int _iter; \
62 for(_iter=0; _iter<(col)->capacity; _iter++) { \
63 if(!(col)->list[_iter]) continue; \
64 var = (col)->list[_iter];
65
66#define ENDFOREACH \
67 } \
68 } while(0);
69
70#endif