View | Details | Raw Unified | Return to bug 117199
Collapse All | Expand All

(-)asterisk/Makefile (-9 / +56 lines)
Lines 6-13 Link Here
6
#
6
#
7
7
8
PORTNAME=	asterisk
8
PORTNAME=	asterisk
9
PORTVERSION=	1.4.11
9
PORTVERSION=	1.4.13
10
PORTREVISION=	2
10
PORTREVISION=	1
11
CATEGORIES=	net
11
CATEGORIES=	net
12
MASTER_SITES=	http://ftp.digium.com/pub/asterisk/ \
12
MASTER_SITES=	http://ftp.digium.com/pub/asterisk/ \
13
		http://ftp.digium.com/pub/asterisk/old-releases/
13
		http://ftp.digium.com/pub/asterisk/old-releases/
Lines 48-54 Link Here
48
		FREETDS		"Enable FreeTDS support" on \
48
		FREETDS		"Enable FreeTDS support" on \
49
		JABBER		"Enable Jabber and Gtalk support" on \
49
		JABBER		"Enable Jabber and Gtalk support" on \
50
		SQLITE          "Enable SQLITE support" on \
50
		SQLITE          "Enable SQLITE support" on \
51
		CODEC_PATCH	"Apply codec negotiation patch" off
51
		IMAP            "Enable IMAP support" off \
52
		FAX             "Enable FAX support" on	
53
54
##		CODEC_PATCH	"Apply codec negotiation patch" off
52
55
53
.include <bsd.port.pre.mk>
56
.include <bsd.port.pre.mk>
54
57
Lines 156-171 Link Here
156
LIB_DEPENDS+=	sqlite:${PORTSDIR}/databases/sqlite2
159
LIB_DEPENDS+=	sqlite:${PORTSDIR}/databases/sqlite2
157
.endif
160
.endif
158
161
159
.if defined(WITH_CODEC_PATCH)
162
#.if defined(WITH_CODEC_PATCH)
160
PATCHFILES=	asterisk-1.4.11-codec-negotiation-20070831.diff.gz
163
#PATCHFILES=	asterisk-1.4.11-codec-negotiation-20070831.diff.gz
161
PATCH_SITES=	http://b2bua.org/chrome/site/
164
#PATCH_SITES=	http://b2bua.org/chrome/site/
162
EXTRA_PATCHES+=	${PATCHDIR}/codecnego-patch-Makefile
165
#EXTRA_PATCHES+=	${PATCHDIR}/codecnego-patch-Makefile
163
.else
166
#.else
164
EXTRA_PATCHES+=	${PATCHDIR}/nocodecnego-patch-Makefile
167
#EXTRA_PATCHES+=	${PATCHDIR}/nocodecnego-patch-Makefile
168
#.endif
169
170
.if defined(WITHOUT_FAX)
171
PLIST_SUB+=    WITH_FAX="@comment "
172
.else
173
MAKE_ENV+=     WITH_FAX=yes
174
CONFIGURE_ARGS+= --with-spandsp=yes
175
BUILD_DEPENDS+= spandsp>=0.0.3:${PORTSDIR}/comms/spandsp
176
LIB_DEPENDS+=  spandsp.0:${PORTSDIR}/comms/spandsp
177
PLIST_SUB+=    WITH_FAX=""
178
.endif
179
180
.if defined(WITHOUT_IMAP)
181
PLIST_SUB+=    WITH_IMAP="@comment "
182
.else
183
MAKE_ENV+=     WITH_IMAP=yes
184
CONFIGURE_ARGS+= --with-imap=${LOCALBASE}
185
LIB_DEPENDS+=  c-client4.9:${PORTSDIR}/mail/cclient
186
PLIST_SUB+=    WITH_IMAP=""
165
.endif
187
.endif
166
188
167
189
168
post-patch:
190
post-patch:
169
	${REINPLACE_CMD} -e 's|/var/lib|${PREFIX}/share|g' ${WRKSRC}/configs/musiconhold.conf.sample
191
	${REINPLACE_CMD} -e 's|/var/lib|${PREFIX}/share|g' ${WRKSRC}/configs/musiconhold.conf.sample
170
192
193
pre-configure:
194
195
.if defined(WITH_ODBC) && defined(WITH_IMAP)
196
	@${ECHO_MSG}    ""
197
	@${ECHO_MSG}    "WARNING!!! You can choose only one option for build app_voicemail"
198
	@${ECHO_MSG}    ""
199
.endif
200
.if defined(WITH_ODBC)
201
	@${ECHO_MSG}    ""
202
	@${ECHO_MSG}    "If necessary, build  with the option ODBC_STORAGE"
203
	@${ECHO_MSG}    "press Ctrl-C and run following command:"
204
	@${ECHO_MSG}    "1. cd work/asterisk-1.4.x"
205
	@${ECHO_MSG}    "2. gmake menuselect"
206
	@${ECHO_MSG}    "3. Select 'Voicemail Build Options->ODBC_STORAGE'"
207
.endif
208
209
.if defined(WITH_IMAP)
210
	@${ECHO_MSG}    ""
211
	@${ECHO_MSG}    "If necessary, build  with the option IMAP_STORAGE"
212
	@${ECHO_MSG}    "press Ctrl-C and run following command:"
213
	@${ECHO_MSG}    "1. cd work/asterisk-1.4.x"
214
	@${ECHO_MSG}    "2. gmake menuselect"
215
	@${ECHO_MSG}    "3. Select 'Voicemail Build Options->IMAP_STORAGE'"
216
.endif
217
171
.include <bsd.port.post.mk>
218
.include <bsd.port.post.mk>
(-)asterisk/distinfo (-6 / +3 lines)
Lines 1-6 Link Here
1
MD5 (asterisk-1.4.11.tar.gz) = 3ba9b399fedc68de4845b1c5603d167c
1
MD5 (asterisk-1.4.13.tar.gz) = 49b73114831c21cc9784d3b3f4fb5bec
2
SHA256 (asterisk-1.4.11.tar.gz) = 99928f8aab62e532e71fdecbd18d5af2d211f1bbce27cf9cf2efc34e57a20101
2
SHA256 (asterisk-1.4.13.tar.gz) = 0bea2f612c7b6ebcfb97c77d473a45018a3e112e5610ff7fab83561be7b19449
3
SIZE (asterisk-1.4.11.tar.gz) = 11218944
3
SIZE (asterisk-1.4.13.tar.gz) = 11257579
4
MD5 (asterisk-1.4.11-codec-negotiation-20070831.diff.gz) = cf2385047d55ffffcff7197480e54c79
5
SHA256 (asterisk-1.4.11-codec-negotiation-20070831.diff.gz) = 9d6b6efcbf20b35f407aa53320b649c0d884cce9b519435c7ea3aa8a51b2b42f
6
SIZE (asterisk-1.4.11-codec-negotiation-20070831.diff.gz) = 37651
(-)asterisk/files/patch-apps::app_rxfax.c (+383 lines)
Line 0 Link Here
1
--- apps/app_rxfax.c.orig	Tue Jul 10 15:28:04 2007
2
+++ apps/app_rxfax.c	Tue Jul 10 15:27:28 2007
3
@@ -0,0 +1,380 @@
4
+/*
5
+ * Asterisk -- A telephony toolkit for Linux.
6
+ *
7
+ * Trivial application to receive a TIFF FAX file
8
+ * 
9
+ * Copyright (C) 2003, Steve Underwood
10
+ *
11
+ * Steve Underwood <steveu@coppice.org>
12
+ *
13
+ * This program is free software, distributed under the terms of
14
+ * the GNU General Public License
15
+ */
16
+
17
+/*** MODULEINFO
18
+         <depend>spandsp</depend>
19
+***/
20
+ 
21
+#include "asterisk.h"
22
+
23
+ASTERISK_FILE_VERSION(__FILE__, "$Revision:$")
24
+
25
+#include <string.h>
26
+#include <stdlib.h>
27
+#include <stdio.h>
28
+#include <inttypes.h>
29
+#include <pthread.h>
30
+#include <errno.h>
31
+#include <tiffio.h>
32
+
33
+#include <spandsp.h>
34
+
35
+#include "asterisk/lock.h"
36
+#include "asterisk/file.h"
37
+#include "asterisk/logger.h"
38
+#include "asterisk/channel.h"
39
+#include "asterisk/pbx.h"
40
+#include "asterisk/module.h"
41
+#include "asterisk/manager.h"
42
+
43
+#ifndef AST_MODULE
44
+#define AST_MODULE "app_rxfax"
45
+#endif
46
+
47
+static char *app = "RxFAX";
48
+
49
+static char *synopsis = "Receive a FAX to a file";
50
+
51
+static char *descrip = 
52
+"  RxFAX(filename[|caller][|debug]): Receives a FAX from the channel into the\n"
53
+"given filename. If the file exists it will be overwritten. The file\n"
54
+"should be in TIFF/F format.\n"
55
+"The \"caller\" option makes the application behave as a calling machine,\n"
56
+"rather than the answering machine. The default behaviour is to behave as\n"
57
+"an answering machine.\n"
58
+"Uses LOCALSTATIONID to identify itself to the remote end.\n"
59
+"     LOCALHEADERINFO to generate a header line on each page.\n"
60
+"Sets REMOTESTATIONID to the sender CSID.\n"
61
+"     FAXPAGES to the number of pages received.\n"
62
+"     FAXBITRATE to the transmition rate.\n"
63
+"     FAXRESOLUTION to the resolution.\n"
64
+"Returns -1 when the user hangs up.\n"
65
+"Returns 0 otherwise.\n";
66
+
67
+#define MAX_BLOCK_SIZE 240
68
+
69
+static void span_message(int level, const char *msg)
70
+{
71
+    int ast_level;
72
+    
73
+    if (level == SPAN_LOG_WARNING)
74
+        ast_level = __LOG_WARNING;
75
+    else if (level == SPAN_LOG_WARNING)
76
+        ast_level = __LOG_WARNING;
77
+    else
78
+        ast_level = __LOG_DEBUG;
79
+    ast_log(ast_level, __FILE__, __LINE__, __PRETTY_FUNCTION__, msg);
80
+}
81
+/*- End of function --------------------------------------------------------*/
82
+
83
+#if 0
84
+static void t30_flush(t30_state_t *s, int which)
85
+{
86
+    /* TODO: */
87
+}
88
+/*- End of function --------------------------------------------------------*/
89
+#endif
90
+
91
+static void phase_e_handler(t30_state_t *s, void *user_data, int result)
92
+{
93
+    struct ast_channel *chan;
94
+    t30_stats_t t;
95
+    char local_ident[21];
96
+    char far_ident[21];
97
+    char buf[11];
98
+    
99
+    chan = (struct ast_channel *) user_data;
100
+    if (result == T30_ERR_OK)
101
+    {
102
+        t30_get_transfer_statistics(s, &t);
103
+        t30_get_far_ident(s, far_ident);
104
+        t30_get_local_ident(s, local_ident);
105
+        ast_log(LOG_DEBUG, "==============================================================================\n");
106
+        ast_log(LOG_DEBUG, "Fax successfully received.\n");
107
+        ast_log(LOG_DEBUG, "Remote station id: %s\n", far_ident);
108
+        ast_log(LOG_DEBUG, "Local station id:  %s\n", local_ident);
109
+        ast_log(LOG_DEBUG, "Pages transferred: %i\n", t.pages_transferred);
110
+        ast_log(LOG_DEBUG, "Image resolution:  %i x %i\n", t.x_resolution, t.y_resolution);
111
+        ast_log(LOG_DEBUG, "Transfer Rate:     %i\n", t.bit_rate);
112
+        ast_log(LOG_DEBUG, "==============================================================================\n");
113
+        manager_event(EVENT_FLAG_CALL,
114
+                      "FaxReceived", "Channel: %s\nExten: %s\nCallerID: %s\nRemoteStationID: %s\nLocalStationID: %s\nPagesTransferred: %i\nResolution: %i\nTransferRate: %i\nFileName: %s\n",
115
+                      chan->name,
116
+                      chan->exten,
117
+                      (chan->cid.cid_num)  ?  chan->cid.cid_num  :  "",
118
+                      far_ident,
119
+                      local_ident,
120
+                      t.pages_transferred,
121
+                      t.y_resolution,
122
+                      t.bit_rate,
123
+                      s->rx_file);
124
+        pbx_builtin_setvar_helper(chan, "REMOTESTATIONID", far_ident);
125
+        snprintf(buf, sizeof(buf), "%i", t.pages_transferred);
126
+        pbx_builtin_setvar_helper(chan, "FAXPAGES", buf);
127
+        snprintf(buf, sizeof(buf), "%i", t.y_resolution);
128
+        pbx_builtin_setvar_helper(chan, "FAXRESOLUTION", buf);
129
+        snprintf(buf, sizeof(buf), "%i", t.bit_rate);
130
+        pbx_builtin_setvar_helper(chan, "FAXBITRATE", buf);
131
+    }
132
+    else
133
+    {
134
+        ast_log(LOG_DEBUG, "==============================================================================\n");
135
+        ast_log(LOG_DEBUG, "Fax receive not successful - result (%d) %s.\n", result, t30_completion_code_to_str(result));
136
+        ast_log(LOG_DEBUG, "==============================================================================\n");
137
+    }
138
+}
139
+/*- End of function --------------------------------------------------------*/
140
+
141
+static void phase_d_handler(t30_state_t *s, void *user_data, int result)
142
+{
143
+    struct ast_channel *chan;
144
+    t30_stats_t t;
145
+    
146
+    chan = (struct ast_channel *) user_data;
147
+    if (result)
148
+    {
149
+        t30_get_transfer_statistics(s, &t);
150
+        ast_log(LOG_DEBUG, "==============================================================================\n");
151
+        ast_log(LOG_DEBUG, "Pages transferred:  %i\n", t.pages_transferred);
152
+        ast_log(LOG_DEBUG, "Image size:         %i x %i\n", t.width, t.length);
153
+        ast_log(LOG_DEBUG, "Image resolution    %i x %i\n", t.x_resolution, t.y_resolution);
154
+        ast_log(LOG_DEBUG, "Transfer Rate:      %i\n", t.bit_rate);
155
+        ast_log(LOG_DEBUG, "Bad rows            %i\n", t.bad_rows);
156
+        ast_log(LOG_DEBUG, "Longest bad row run %i\n", t.longest_bad_row_run);
157
+        ast_log(LOG_DEBUG, "Compression type    %i\n", t.encoding);
158
+        ast_log(LOG_DEBUG, "Image size (bytes)  %i\n", t.image_size);
159
+        ast_log(LOG_DEBUG, "==============================================================================\n");
160
+    }
161
+}
162
+/*- End of function --------------------------------------------------------*/
163
+
164
+static int rxfax_exec(struct ast_channel *chan, void *data)
165
+{
166
+    int res = 0;
167
+    char template_file[256];
168
+    char target_file[256];
169
+    char *s;
170
+    char *t;
171
+    char *v;
172
+    const char *x;
173
+    int option;
174
+    int len;
175
+    int i;
176
+    fax_state_t fax;
177
+    int calling_party;
178
+    int verbose;
179
+    int samples;
180
+
181
+    struct ast_module_user *u;
182
+    struct ast_frame *inf = NULL;
183
+    struct ast_frame outf;
184
+
185
+    int original_read_fmt;
186
+    int original_write_fmt;
187
+    
188
+    uint8_t __buf[sizeof(uint16_t)*MAX_BLOCK_SIZE + 2*AST_FRIENDLY_OFFSET];
189
+    uint8_t *buf = __buf + AST_FRIENDLY_OFFSET;
190
+
191
+    if (chan == NULL)
192
+    {
193
+        ast_log(LOG_WARNING, "Fax receive channel is NULL. Giving up.\n");
194
+        return -1;
195
+    }
196
+
197
+    span_set_message_handler(span_message);
198
+
199
+    /* The next few lines of code parse out the filename and header from the input string */
200
+    if (data == NULL)
201
+    {
202
+        /* No data implies no filename or anything is present */
203
+        ast_log(LOG_WARNING, "Rxfax requires an argument (filename)\n");
204
+        return -1;
205
+    }
206
+    
207
+    calling_party = FALSE;
208
+    verbose = FALSE;
209
+    target_file[0] = '\0';
210
+
211
+    for (option = 0, v = s = data;  v;  option++, s++)
212
+    {
213
+        t = s;
214
+        v = strchr(s, '|');
215
+        s = (v)  ?  v  :  s + strlen(s);
216
+        strncpy((char *) buf, t, s - t);
217
+        buf[s - t] = '\0';
218
+        if (option == 0)
219
+        {
220
+            /* The first option is always the file name */
221
+            len = s - t;
222
+            if (len > 255)
223
+                len = 255;
224
+            strncpy(target_file, t, len);
225
+            target_file[len] = '\0';
226
+            /* Allow the use of %d in the file name for a wild card of sorts, to
227
+               create a new file with the specified name scheme */
228
+            if ((x = strchr(target_file, '%'))  &&  x[1] == 'd')
229
+            {
230
+                strcpy(template_file, target_file);
231
+                i = 0;
232
+                do
233
+                {
234
+                    snprintf(target_file, 256, template_file, 1);
235
+                    i++;
236
+                }
237
+                while (ast_fileexists(target_file, "", chan->language) != -1);
238
+            }
239
+        }
240
+        else if (strncmp("caller", t, s - t) == 0)
241
+        {
242
+            calling_party = TRUE;
243
+        }
244
+        else if (strncmp("debug", t, s - t) == 0)
245
+        {
246
+            verbose = TRUE;
247
+        }
248
+    }
249
+
250
+    /* Done parsing */
251
+
252
+    u = ast_module_user_add(chan);
253
+
254
+    if (chan->_state != AST_STATE_UP)
255
+    {
256
+        /* Shouldn't need this, but checking to see if channel is already answered
257
+         * Theoretically asterisk should already have answered before running the app */
258
+        res = ast_answer(chan);
259
+    }
260
+    
261
+    if (!res)
262
+    {
263
+        original_read_fmt = chan->readformat;
264
+        if (original_read_fmt != AST_FORMAT_SLINEAR)
265
+        {
266
+            res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
267
+            if (res < 0)
268
+            {
269
+                ast_log(LOG_WARNING, "Unable to set to linear read mode, giving up\n");
270
+                return -1;
271
+            }
272
+        }
273
+        original_write_fmt = chan->writeformat;
274
+        if (original_write_fmt != AST_FORMAT_SLINEAR)
275
+        {
276
+            res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
277
+            if (res < 0)
278
+            {
279
+                ast_log(LOG_WARNING, "Unable to set to linear write mode, giving up\n");
280
+                res = ast_set_read_format(chan, original_read_fmt);
281
+                if (res)
282
+                    ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
283
+                return -1;
284
+            }
285
+        }
286
+        fax_init(&fax, calling_party);
287
+        if (verbose)
288
+            fax.logging.level = SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW;
289
+        x = pbx_builtin_getvar_helper(chan, "LOCALSTATIONID");
290
+        if (x  &&  x[0])
291
+            t30_set_local_ident(&fax.t30_state, x);
292
+        x = pbx_builtin_getvar_helper(chan, "LOCALHEADERINFO");
293
+        if (x  &&  x[0])
294
+            t30_set_header_info(&fax.t30_state, x);
295
+        t30_set_rx_file(&fax.t30_state, target_file, -1);
296
+        //t30_set_phase_b_handler(&fax.t30_state, phase_b_handler, chan);
297
+        t30_set_phase_d_handler(&fax.t30_state, phase_d_handler, chan);
298
+        t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, chan);
299
+        t30_set_ecm_capability(&fax.t30_state, TRUE);
300
+        t30_set_supported_compressions(&fax.t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
301
+        while (ast_waitfor(chan, -1) > -1)
302
+        {
303
+            inf = ast_read(chan);
304
+            if (inf == NULL)
305
+            {
306
+                res = -1;
307
+                break;
308
+            }
309
+            if (inf->frametype == AST_FRAME_VOICE)
310
+            {
311
+                if (fax_rx(&fax, inf->data, inf->samples))
312
+                    break;
313
+                samples = (inf->samples <= MAX_BLOCK_SIZE)  ?  inf->samples  :  MAX_BLOCK_SIZE;
314
+                len = fax_tx(&fax, (int16_t *) &buf[AST_FRIENDLY_OFFSET], samples);
315
+                if (len)
316
+                {
317
+                    memset(&outf, 0, sizeof(outf));
318
+                    outf.frametype = AST_FRAME_VOICE;
319
+                    outf.subclass = AST_FORMAT_SLINEAR;
320
+                    outf.datalen = len*sizeof(int16_t);
321
+                    outf.samples = len;
322
+                    outf.data = &buf[AST_FRIENDLY_OFFSET];
323
+                    outf.offset = AST_FRIENDLY_OFFSET;
324
+                    outf.src = "RxFAX";
325
+                    if (ast_write(chan, &outf) < 0)
326
+                    {
327
+                        ast_log(LOG_WARNING, "Unable to write frame to channel; %s\n", strerror(errno));
328
+                        break;
329
+                    }
330
+                }
331
+            }
332
+            ast_frfree(inf);
333
+        }
334
+        if (inf == NULL)
335
+        {
336
+            ast_log(LOG_DEBUG, "Got hangup\n");
337
+            res = -1;
338
+        }
339
+        if (original_read_fmt != AST_FORMAT_SLINEAR)
340
+        {
341
+            res = ast_set_read_format(chan, original_read_fmt);
342
+            if (res)
343
+                ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
344
+        }
345
+        if (original_write_fmt != AST_FORMAT_SLINEAR)
346
+        {
347
+            res = ast_set_write_format(chan, original_write_fmt);
348
+            if (res)
349
+                ast_log(LOG_WARNING, "Unable to restore write format on '%s'\n", chan->name);
350
+        }
351
+        t30_terminate(&fax.t30_state);
352
+    }
353
+    else
354
+    {
355
+        ast_log(LOG_WARNING, "Could not answer channel '%s'\n", chan->name);
356
+    }
357
+    ast_module_user_remove(u);
358
+    return res;
359
+}
360
+/*- End of function --------------------------------------------------------*/
361
+
362
+static int unload_module(void)
363
+{
364
+	int res;
365
+
366
+	ast_module_user_hangup_all();
367
+
368
+	res = ast_unregister_application(app);	
369
+	
370
+
371
+	return res;
372
+}
373
+/*- End of function --------------------------------------------------------*/
374
+
375
+static int load_module(void)
376
+{
377
+	return ast_register_application(app, rxfax_exec, synopsis, descrip);
378
+}
379
+/*- End of function --------------------------------------------------------*/
380
+
381
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Trivial FAX Receive Application");
382
+
383
+/*- End of file ------------------------------------------------------------*/
(-)asterisk/files/patch-apps::app_txfax.c (+309 lines)
Line 0 Link Here
1
--- apps/app_txfax.c.orig	Tue Jul 10 15:28:13 2007
2
+++ apps/app_txfax.c	Tue Jul 10 15:27:37 2007
3
@@ -0,0 +1,306 @@
4
+/*
5
+ * Asterisk -- A telephony toolkit for Linux.
6
+ *
7
+ * Trivial application to send a TIFF file as a FAX
8
+ * 
9
+ * Copyright (C) 2003, Steve Underwood
10
+ *
11
+ * Steve Underwood <steveu@coppice.org>
12
+ *
13
+ * This program is free software, distributed under the terms of
14
+ * the GNU General Public License
15
+ */
16
+
17
+/*** MODULEINFO
18
+         <depend>spandsp</depend>
19
+***/
20
+ 
21
+#include "asterisk.h"
22
+
23
+ASTERISK_FILE_VERSION(__FILE__, "$Revision:$")
24
+
25
+#include <string.h>
26
+#include <stdlib.h>
27
+#include <stdio.h>
28
+#include <inttypes.h>
29
+#include <pthread.h>
30
+#include <errno.h>
31
+#include <tiffio.h>
32
+
33
+#include <spandsp.h>
34
+
35
+#include "asterisk/lock.h"
36
+#include "asterisk/file.h"
37
+#include "asterisk/logger.h"
38
+#include "asterisk/channel.h"
39
+#include "asterisk/pbx.h"
40
+#include "asterisk/module.h"
41
+
42
+#ifndef AST_MODULE
43
+#define AST_MODULE "app_txfax"
44
+#endif
45
+
46
+static char *app = "TxFAX";
47
+
48
+static char *synopsis = "Send a FAX file";
49
+
50
+static char *descrip = 
51
+"  TxFAX(filename[|caller][|debug]):  Send a given TIFF file to the channel as a FAX.\n"
52
+"The \"caller\" option makes the application behave as a calling machine,\n"
53
+"rather than the answering machine. The default behaviour is to behave as\n"
54
+"an answering machine.\n"
55
+"Uses LOCALSTATIONID to identify itself to the remote end.\n"
56
+"     LOCALHEADERINFO to generate a header line on each page.\n"
57
+"Sets REMOTESTATIONID to the receiver CSID.\n"
58
+"Returns -1 when the user hangs up, or if the file does not exist.\n"
59
+"Returns 0 otherwise.\n";
60
+
61
+#define MAX_BLOCK_SIZE 240
62
+
63
+static void span_message(int level, const char *msg)
64
+{
65
+    int ast_level;
66
+    
67
+    if (level == SPAN_LOG_WARNING)
68
+        ast_level = __LOG_WARNING;
69
+    else if (level == SPAN_LOG_WARNING)
70
+        ast_level = __LOG_WARNING;
71
+    else
72
+        ast_level = __LOG_DEBUG;
73
+    ast_log(ast_level, __FILE__, __LINE__, __PRETTY_FUNCTION__, msg);
74
+}
75
+/*- End of function --------------------------------------------------------*/
76
+
77
+#if 0
78
+static void t30_flush(t30_state_t *s, int which)
79
+{
80
+    /* TODO: */
81
+}
82
+/*- End of function --------------------------------------------------------*/
83
+#endif
84
+
85
+static void phase_e_handler(t30_state_t *s, void *user_data, int result)
86
+{
87
+    struct ast_channel *chan;
88
+    char far_ident[21];
89
+    
90
+    chan = (struct ast_channel *) user_data;
91
+    if (result == T30_ERR_OK)
92
+    {
93
+        t30_get_far_ident(s, far_ident);
94
+        pbx_builtin_setvar_helper(chan, "REMOTESTATIONID", far_ident);
95
+    }
96
+    else
97
+    {
98
+        ast_log(LOG_DEBUG, "==============================================================================\n");
99
+        ast_log(LOG_DEBUG, "Fax send not successful - result (%d) %s.\n", result, t30_completion_code_to_str(result));
100
+        ast_log(LOG_DEBUG, "==============================================================================\n");
101
+    }
102
+}
103
+/*- End of function --------------------------------------------------------*/
104
+
105
+static int txfax_exec(struct ast_channel *chan, void *data)
106
+{
107
+    int res = 0;
108
+    char source_file[256];
109
+    char *s;
110
+    char *t;
111
+    char *v;
112
+    const char *x;
113
+    int option;
114
+    int len;
115
+    fax_state_t fax;
116
+    int calling_party;
117
+    int verbose;
118
+    int samples;
119
+    
120
+    struct ast_module_user *u;
121
+    struct ast_frame *inf = NULL;
122
+    struct ast_frame outf;
123
+
124
+    int original_read_fmt;
125
+    int original_write_fmt;
126
+    
127
+    uint8_t __buf[sizeof(uint16_t)*MAX_BLOCK_SIZE + 2*AST_FRIENDLY_OFFSET];
128
+    uint8_t *buf = __buf + AST_FRIENDLY_OFFSET;
129
+
130
+    if (chan == NULL)
131
+    {
132
+        ast_log(LOG_WARNING, "Fax transmit channel is NULL. Giving up.\n");
133
+        return -1;
134
+    }
135
+
136
+    span_set_message_handler(span_message);
137
+
138
+    /* The next few lines of code parse out the filename and header from the input string */
139
+    if (data == NULL)
140
+    {
141
+        /* No data implies no filename or anything is present */
142
+        ast_log(LOG_WARNING, "Txfax requires an argument (filename)\n");
143
+        return -1;
144
+    }
145
+    
146
+    calling_party = FALSE;
147
+    verbose = FALSE;
148
+    source_file[0] = '\0'; 
149
+
150
+    for (option = 0, v = s = data;  v;  option++, s++)
151
+    {
152
+        t = s;
153
+        v = strchr(s, '|');
154
+        s = (v)  ?  v  :  s + strlen(s);
155
+        strncpy((char *) buf, t, s - t);
156
+        buf[s - t] = '\0';
157
+        if (option == 0)
158
+        {
159
+            /* The first option is always the file name */
160
+            len = s - t;
161
+            if (len > 255)
162
+                len = 255;
163
+            strncpy(source_file, t, len);
164
+            source_file[len] = '\0';
165
+        }
166
+        else if (strncmp("caller", t, s - t) == 0)
167
+        {
168
+            calling_party = TRUE;
169
+        }
170
+        else if (strncmp("debug", t, s - t) == 0)
171
+        {
172
+            verbose = TRUE;
173
+        }
174
+    }
175
+
176
+    /* Done parsing */
177
+
178
+    u = ast_module_user_add(chan);
179
+
180
+    if (chan->_state != AST_STATE_UP)
181
+    {
182
+        /* Shouldn't need this, but checking to see if channel is already answered
183
+         * Theoretically asterisk should already have answered before running the app */
184
+        res = ast_answer(chan);
185
+    }
186
+    
187
+    if (!res)
188
+    {
189
+        original_read_fmt = chan->readformat;
190
+        if (original_read_fmt != AST_FORMAT_SLINEAR)
191
+        {
192
+            res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
193
+            if (res < 0)
194
+            {
195
+                ast_log(LOG_WARNING, "Unable to set to linear read mode, giving up\n");
196
+                return -1;
197
+            }
198
+        }
199
+        original_write_fmt = chan->writeformat;
200
+        if (original_write_fmt != AST_FORMAT_SLINEAR)
201
+        {
202
+            res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
203
+            if (res < 0)
204
+            {
205
+                ast_log(LOG_WARNING, "Unable to set to linear write mode, giving up\n");
206
+                res = ast_set_read_format(chan, original_read_fmt);
207
+                if (res)
208
+                    ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
209
+                return -1;
210
+            }
211
+        }
212
+        fax_init(&fax, calling_party);
213
+        if (verbose)
214
+	    fax.logging.level = SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW;
215
+
216
+        x = pbx_builtin_getvar_helper(chan, "LOCALSTATIONID");
217
+        if (x  &&  x[0])
218
+            t30_set_local_ident(&fax.t30_state, x);
219
+        x = pbx_builtin_getvar_helper(chan, "LOCALHEADERINFO");
220
+        if (x  &&  x[0])
221
+            t30_set_header_info(&fax.t30_state, x);
222
+        t30_set_tx_file(&fax.t30_state, source_file, -1, -1);
223
+        //t30_set_phase_b_handler(&fax.t30_state, phase_b_handler, chan);
224
+        //t30_set_phase_d_handler(&fax.t30_state, phase_d_handler, chan);
225
+        t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, chan);
226
+        t30_set_ecm_capability(&fax.t30_state, TRUE);
227
+        t30_set_supported_compressions(&fax.t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
228
+        while (ast_waitfor(chan, -1) > -1)
229
+        {
230
+            inf = ast_read(chan);
231
+            if (inf == NULL)
232
+            {
233
+                res = -1;
234
+                break;
235
+            }
236
+            if (inf->frametype == AST_FRAME_VOICE)
237
+            {
238
+                if (fax_rx(&fax, inf->data, inf->samples))
239
+                    break;
240
+                samples = (inf->samples <= MAX_BLOCK_SIZE)  ?  inf->samples  :  MAX_BLOCK_SIZE;
241
+                len = fax_tx(&fax, (int16_t *) &buf[AST_FRIENDLY_OFFSET], samples);
242
+                if (len)
243
+                {
244
+                    memset(&outf, 0, sizeof(outf));
245
+                    outf.frametype = AST_FRAME_VOICE;
246
+                    outf.subclass = AST_FORMAT_SLINEAR;
247
+                    outf.datalen = len*sizeof(int16_t);
248
+                    outf.samples = len;
249
+                    outf.data = &buf[AST_FRIENDLY_OFFSET];
250
+                    outf.offset = AST_FRIENDLY_OFFSET;
251
+                    if (ast_write(chan, &outf) < 0)
252
+                    {
253
+                        ast_log(LOG_WARNING, "Unable to write frame to channel; %s\n", strerror(errno));
254
+                        break;
255
+                    }
256
+                }
257
+            }
258
+            ast_frfree(inf);
259
+        }
260
+        if (inf == NULL)
261
+        {
262
+            ast_log(LOG_DEBUG, "Got hangup\n");
263
+            res = -1;
264
+        }
265
+        if (original_read_fmt != AST_FORMAT_SLINEAR)
266
+        {
267
+            res = ast_set_read_format(chan, original_read_fmt);
268
+            if (res)
269
+                ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
270
+        }
271
+        if (original_write_fmt != AST_FORMAT_SLINEAR)
272
+        {
273
+            res = ast_set_write_format(chan, original_write_fmt);
274
+            if (res)
275
+                ast_log(LOG_WARNING, "Unable to restore write format on '%s'\n", chan->name);
276
+        }
277
+        t30_terminate(&fax.t30_state);
278
+    }
279
+    else
280
+    {
281
+        ast_log(LOG_WARNING, "Could not answer channel '%s'\n", chan->name);
282
+    }
283
+    ast_module_user_remove(u);
284
+    return res;
285
+}
286
+/*- End of function --------------------------------------------------------*/
287
+
288
+static int unload_module(void)
289
+{
290
+	int res;
291
+
292
+	ast_module_user_hangup_all();
293
+
294
+	res = ast_unregister_application(app);	
295
+	
296
+
297
+	return res;
298
+}
299
+/*- End of function --------------------------------------------------------*/
300
+
301
+static int load_module(void)
302
+{
303
+    return ast_register_application(app, txfax_exec, synopsis, descrip);
304
+}
305
+/*- End of function --------------------------------------------------------*/
306
+
307
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Trivial FAX Transmit Application");
308
+
309
+/*- End of file ------------------------------------------------------------*/
(-)asterisk/files/patch-build_tools::menuselect-deps.in (+10 lines)
Line 0 Link Here
1
--- build_tools/menuselect-deps.in.orig	2007-10-09 21:26:02.000000000 +0600
2
+++ build_tools/menuselect-deps.in	2007-10-09 21:26:19.000000000 +0600
3
@@ -22,6 +22,7 @@
4
 PRI=@PBX_PRI@
5
 QT=@PBX_QT@
6
 RADIUS=@PBX_RADIUS@
7
+SPANDSP=@PBX_SPANDSP@
8
 SPEEX=@PBX_SPEEX@
9
 SQLITE=@PBX_SQLITE@
10
 SSL=@PBX_OPENSSL@
(-)asterisk/files/patch-configure (-13 / +111 lines)
Lines 1-9 Link Here
1
1
--- configure.orig	2007-09-14 21:50:49.000000000 +0600
2
$FreeBSD: ports/net/asterisk/files/patch-configure,v 1.3 2007/08/10 16:30:40 sobomax Exp $
2
+++ configure	2007-10-09 21:18:50.000000000 +0600
3
3
@@ -820,6 +820,10 @@
4
--- configure.orig
4
 RADIUS_INCLUDE
5
+++ configure
5
 RADIUS_DIR
6
@@ -3926,8 +3926,6 @@
6
 PBX_RADIUS
7
+SPANDSP_LIB
8
+SPANDSP_INCLUDE
9
+SPANDSP_DIR
10
+PBX_SPANDSP
11
 SPEEX_LIB
12
 SPEEX_INCLUDE
13
 SPEEX_DIR
14
@@ -1530,6 +1534,7 @@
15
   --with-qt=PATH          use Qt files in PATH
16
   --with-radius=PATH      use Radius Client files in PATH
17
   --with-speex=PATH       use Speex files in PATH
18
+  --with-spandsp=PATH     use Spandsp library files in PATH
19
   --with-sqlite=PATH      use SQLite files in PATH
20
   --with-suppserv=PATH    use mISDN Supplemental Services files in PATH
21
   --with-ssl=PATH         use OpenSSL files in PATH
22
@@ -3931,8 +3936,6 @@
7
 case "${host_os}" in
23
 case "${host_os}" in
8
      freebsd*)
24
      freebsd*)
9
      ac_default_prefix=/usr/local
25
      ac_default_prefix=/usr/local
Lines 12-18 Link Here
12
      ;;
28
      ;;
13
      *)
29
      *)
14
      ac_default_prefix=/usr
30
      ac_default_prefix=/usr
15
@@ -26228,6 +26226,7 @@
31
@@ -8302,8 +8305,34 @@
32
 
33
 PBX_RADIUS=0
34
 
35
+SPNDSP_DESCRIP="Spandsp Library"
36
+SPANDSP_OPTION="spandsp"
37
 
38
+# Check whether --with-spandsp was given.
39
+if test "${with_spandsp+set}" = set; then
40
+  withval=$with_spandsp;
41
+case ${withval} in
42
+     n|no)
43
+     USE_SPANDSP=no
44
+     PBX_SPANDSP=0
45
+     ;;
46
+     y|ye|yes)
47
+     SPANDSP_DIR="/usr/local"
48
+     SPANDSP_LIB="-L/usr/local/lib -lspandsp"
49
+     SPANDSP_INCLUDE="-I${SPANDSP_DIR}/include"
50
+     SPANDSP_MANDATORY="yes"
51
+     PBX_SPANDSP=1
52
+     ;;
53
+     *)
54
+     SPANDSP_DIR="${withval}"
55
+     SPANDSP_LIB="-L${SPANDSP_DIR}/lib -lspandsp"
56
+     SPANDSP_INCLUDE="-I${SPANDSP_DIR}/include"
57
+     SPANDSP_MANDATORY="yes"
58
+     PBX_SPANDSP=1
59
+     ;;
60
+esac
61
 
62
+fi
63
 
64
 
65
 
66
@@ -18464,11 +18493,11 @@
67
 echo $ECHO_N "checking for UW IMAP Toolkit c-client library... $ECHO_C" >&6; }
68
    saved_cppflags="${CPPFLAGS}"
69
    saved_libs="${LIBS}"
70
-   if test -f ${IMAP_TK_DIR}/c-client/LDFLAGS ; then
71
-      imap_ldflags=`cat ${IMAP_TK_DIR}/c-client/LDFLAGS`
72
+   if test -f ${IMAP_TK_DIR}/include/c-client/LDFLAGS ; then
73
+      imap_ldflags=`cat ${IMAP_TK_DIR}/include/c-client/LDFLAGS`
74
    fi
75
-   CPPFLAGS="${CPPFLAGS} -I${IMAP_TK_DIR}/c-client"
76
-   LIBS="${LIBS} ${IMAP_TK_DIR}/c-client/c-client.a "`echo ${imap_ldflags}`
77
+   CPPFLAGS="${CPPFLAGS} -I${IMAP_TK_DIR}/include/c-client"
78
+   LIBS="${LIBS} ${IMAP_TK_DIR}/lib/libc-client4.a "`echo ${imap_ldflags}`
79
    cat >conftest.$ac_ext <<_ACEOF
80
 /* confdefs.h.  */
81
 _ACEOF
82
@@ -18660,8 +18689,8 @@
83
    if test "${ac_cv_imap_tk}" = "yes"; then
84
       { echo "$as_me:$LINENO: result: yes" >&5
85
 echo "${ECHO_T}yes" >&6; }
86
-      IMAP_TK_LIB="${IMAP_TK_DIR}/c-client/c-client.a "`echo ${imap_ldflags}`
87
-      IMAP_TK_INCLUDE="-I${IMAP_TK_DIR}/c-client"
88
+      IMAP_TK_LIB="${IMAP_TK_DIR}/lib/libc-client4.a "`echo ${imap_ldflags}`
89
+      IMAP_TK_INCLUDE="-I${IMAP_TK_DIR}/include/c-client"
90
       PBX_IMAP_TK=1
91
 
92
 cat >>confdefs.h <<\_ACEOF
93
@@ -26261,6 +26290,7 @@
16
 cat >>conftest.$ac_ext <<_ACEOF
94
 cat >>conftest.$ac_ext <<_ACEOF
17
 /* end confdefs.h.  */
95
 /* end confdefs.h.  */
18
 $ac_includes_default
96
 $ac_includes_default
Lines 20-26 Link Here
20
 #include <${HOME}/openh323/include/h323.h>
98
 #include <${HOME}/openh323/include/h323.h>
21
 _ACEOF
99
 _ACEOF
22
 rm -f conftest.$ac_objext
100
 rm -f conftest.$ac_objext
23
@@ -26268,6 +26267,7 @@
101
@@ -26301,6 +26331,7 @@
24
 cat confdefs.h >>conftest.$ac_ext
102
 cat confdefs.h >>conftest.$ac_ext
25
 cat >>conftest.$ac_ext <<_ACEOF
103
 cat >>conftest.$ac_ext <<_ACEOF
26
 /* end confdefs.h.  */
104
 /* end confdefs.h.  */
Lines 28-34 Link Here
28
 #include <${HOME}/openh323/include/h323.h>
106
 #include <${HOME}/openh323/include/h323.h>
29
 _ACEOF
107
 _ACEOF
30
 if { (ac_try="$ac_cpp conftest.$ac_ext"
108
 if { (ac_try="$ac_cpp conftest.$ac_ext"
31
@@ -26365,6 +26365,7 @@
109
@@ -26398,6 +26429,7 @@
32
 cat >>conftest.$ac_ext <<_ACEOF
110
 cat >>conftest.$ac_ext <<_ACEOF
33
 /* end confdefs.h.  */
111
 /* end confdefs.h.  */
34
 $ac_includes_default
112
 $ac_includes_default
Lines 36-42 Link Here
36
 #include </usr/local/include/openh323/h323.h>
114
 #include </usr/local/include/openh323/h323.h>
37
 _ACEOF
115
 _ACEOF
38
 rm -f conftest.$ac_objext
116
 rm -f conftest.$ac_objext
39
@@ -26405,6 +26406,7 @@
117
@@ -26438,6 +26470,7 @@
40
 cat confdefs.h >>conftest.$ac_ext
118
 cat confdefs.h >>conftest.$ac_ext
41
 cat >>conftest.$ac_ext <<_ACEOF
119
 cat >>conftest.$ac_ext <<_ACEOF
42
 /* end confdefs.h.  */
120
 /* end confdefs.h.  */
Lines 44-50 Link Here
44
 #include </usr/local/include/openh323/h323.h>
122
 #include </usr/local/include/openh323/h323.h>
45
 _ACEOF
123
 _ACEOF
46
 if { (ac_try="$ac_cpp conftest.$ac_ext"
124
 if { (ac_try="$ac_cpp conftest.$ac_ext"
47
@@ -26652,7 +26654,7 @@
125
@@ -26685,7 +26718,7 @@
48
 
126
 
49
 	fi
127
 	fi
50
 
128
 
Lines 53-59 Link Here
53
 
131
 
54
 	if test "${HAS_OPENH323:-unset}" != "unset"; then
132
 	if test "${HAS_OPENH323:-unset}" != "unset"; then
55
 	   { echo "$as_me:$LINENO: checking OpenH323 installation validity" >&5
133
 	   { echo "$as_me:$LINENO: checking OpenH323 installation validity" >&5
56
@@ -31800,6 +31802,7 @@
134
@@ -32232,6 +32265,7 @@
57
 cat >>conftest.$ac_ext <<_ACEOF
135
 cat >>conftest.$ac_ext <<_ACEOF
58
 /* end confdefs.h.  */
136
 /* end confdefs.h.  */
59
 $ac_includes_default
137
 $ac_includes_default
Lines 61-67 Link Here
61
 #include <h323.h>
139
 #include <h323.h>
62
 _ACEOF
140
 _ACEOF
63
 rm -f conftest.$ac_objext
141
 rm -f conftest.$ac_objext
64
@@ -31840,6 +31843,7 @@
142
@@ -32272,6 +32306,7 @@
65
 cat confdefs.h >>conftest.$ac_ext
143
 cat confdefs.h >>conftest.$ac_ext
66
 cat >>conftest.$ac_ext <<_ACEOF
144
 cat >>conftest.$ac_ext <<_ACEOF
67
 /* end confdefs.h.  */
145
 /* end confdefs.h.  */
Lines 69-71 Link Here
69
 #include <h323.h>
147
 #include <h323.h>
70
 _ACEOF
148
 _ACEOF
71
 if { (ac_try="$ac_cpp conftest.$ac_ext"
149
 if { (ac_try="$ac_cpp conftest.$ac_ext"
150
@@ -33842,6 +33877,10 @@
151
 RADIUS_INCLUDE!$RADIUS_INCLUDE$ac_delim
152
 RADIUS_DIR!$RADIUS_DIR$ac_delim
153
 PBX_RADIUS!$PBX_RADIUS$ac_delim
154
+SPANDSP_LIB!$SPANDSP_LIB$ac_delim
155
+SPANDSP_INCLUDE!$SPANDSP_INCLUDE$ac_delim
156
+SPANDSP_DIR!$SPANDSP_DIR$ac_delim
157
+PBX_SPANDSP!$PBX_SPANDSP$ac_delim
158
 SPEEX_LIB!$SPEEX_LIB$ac_delim
159
 SPEEX_INCLUDE!$SPEEX_INCLUDE$ac_delim
160
 SPEEX_DIR!$SPEEX_DIR$ac_delim
161
@@ -33933,7 +33972,7 @@
162
 LTLIBOBJS!$LTLIBOBJS$ac_delim
163
 _ACEOF
164
 
165
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 96; then
166
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 100; then
167
     break
168
   elif $ac_last_try; then
169
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
(-)asterisk/files/patch-configure.ac (+19 lines)
Line 0 Link Here
1
--- configure.ac.orig	2007-10-09 21:08:41.000000000 +0600
2
+++ configure.ac	2007-10-09 21:09:29.000000000 +0600
3
@@ -196,6 +196,7 @@
4
 AST_EXT_LIB_SETUP([OPENH323], [OpenH323], [h323])
5
 AST_EXT_LIB_SETUP([QT], [Qt], [qt])
6
 AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
7
+AST_EXT_LIB_SETUP([SPANDSP], [Spandsp Library], [spandsp])
8
 AST_EXT_LIB_SETUP([SPEEX], [Speex], [speex])
9
 AST_EXT_LIB_SETUP([SQLITE], [SQLite], [sqlite])
10
 AST_EXT_LIB_SETUP([SUPPSERV], [mISDN Supplemental Services], [suppserv])
11
@@ -942,6 +943,8 @@
12
 
13
 AST_EXT_LIB_CHECK([RADIUS], [radiusclient-ng], [rc_read_config], [radiusclient-ng.h])
14
 
15
+AST_EXT_LIB_CHECK([SPANDSP], [spandsp], [fax_init], [spandsp.h], [-ltiff])
16
+
17
 AST_EXT_LIB_CHECK([SPEEX], [speex], [speex_encode], [speex/speex.h], [-lm])
18
 
19
 AST_EXT_LIB_CHECK([SQLITE], [sqlite], [sqlite_exec], [sqlite.h])
(-)asterisk/files/patch-makeopts.in (+12 lines)
Line 0 Link Here
1
--- makeopts.in.orig	2007-09-14 21:50:49.000000000 +0600
2
+++ makeopts.in	2007-10-09 21:06:46.000000000 +0600
3
@@ -140,6 +140,9 @@
4
 RADIUS_INCLUDE=@RADIUS_INCLUDE@
5
 RADIUS_LIB=@RADIUS_LIB@
6
 
7
+SPANDSP_INCLUDE=@SPANDSP_INCLUDE@
8
+SPANDSP_LIB=@SPANDSP_LIB@
9
+
10
 SPEEX_INCLUDE=@SPEEX_INCLUDE@
11
 SPEEX_LIB=@SPEEX_LIB@
12
 
(-)asterisk/pkg-plist (-2 / +3 lines)
Lines 58-65 Link Here
58
etc/asterisk/mgcp.conf-dist
58
etc/asterisk/mgcp.conf-dist
59
@unexec if cmp -s %D/etc/asterisk/misdn.conf %D/etc/asterisk/misdn.conf-dist; then rm -f %D/etc/asterisk/misdn.conf; fi
59
@unexec if cmp -s %D/etc/asterisk/misdn.conf %D/etc/asterisk/misdn.conf-dist; then rm -f %D/etc/asterisk/misdn.conf; fi
60
etc/asterisk/misdn.conf-dist
60
etc/asterisk/misdn.conf-dist
61
@unexec if cmp -s %D/etc/asterisk/modem.conf %D/etc/asterisk/modem.conf-dist; then rm -f %D/etc/asterisk/modem.conf; fi
62
etc/asterisk/modem.conf-dist
63
@unexec if cmp -s %D/etc/asterisk/modules.conf %D/etc/asterisk/modules.conf-dist; then rm -f %D/etc/asterisk/modules.conf; fi
61
@unexec if cmp -s %D/etc/asterisk/modules.conf %D/etc/asterisk/modules.conf-dist; then rm -f %D/etc/asterisk/modules.conf; fi
64
etc/asterisk/modules.conf-dist
62
etc/asterisk/modules.conf-dist
65
@unexec if cmp -s %D/etc/asterisk/musiconhold.conf %D/etc/asterisk/musiconhold.conf-dist; then rm -f %D/etc/asterisk/musiconhold.conf; fi
63
@unexec if cmp -s %D/etc/asterisk/musiconhold.conf %D/etc/asterisk/musiconhold.conf-dist; then rm -f %D/etc/asterisk/musiconhold.conf; fi
Lines 137-142 Link Here
137
include/asterisk/astdb.h
135
include/asterisk/astdb.h
138
include/asterisk/astmm.h
136
include/asterisk/astmm.h
139
include/asterisk/astobj.h
137
include/asterisk/astobj.h
138
include/asterisk/astobj2.h
140
include/asterisk/astosp.h
139
include/asterisk/astosp.h
141
include/asterisk/autoconfig.h
140
include/asterisk/autoconfig.h
142
include/asterisk/build.h
141
include/asterisk/build.h
Lines 768-773 Link Here
768
%%WITH_ZAPTEL%%lib/asterisk/modules/codec_zap.so
767
%%WITH_ZAPTEL%%lib/asterisk/modules/codec_zap.so
769
%%WITH_ODBC%%lib/asterisk/modules/res_config_odbc.so
768
%%WITH_ODBC%%lib/asterisk/modules/res_config_odbc.so
770
%%WITH_ODBC%%lib/asterisk/modules/res_odbc.so
769
%%WITH_ODBC%%lib/asterisk/modules/res_odbc.so
770
%%WITH_FAX%%lib/asterisk/modules/app_rxfax.so
771
%%WITH_FAX%%lib/asterisk/modules/app_txfax.so
771
@dirrm share/asterisk/static-http
772
@dirrm share/asterisk/static-http
772
@dirrm share/asterisk/sounds/silence
773
@dirrm share/asterisk/sounds/silence
773
@dirrm share/asterisk/sounds/phonetic
774
@dirrm share/asterisk/sounds/phonetic

Return to bug 117199