Use find_user for existsmailbox
[asterisk/asterisk.git] / apps / app_striplsd.c
1 /*
2  * Asterisk -- A telephony toolkit for Linux.
3  *
4  * Skeleton application
5  * 
6  * Copyright (C) 1999, Mark Spencer
7  *
8  * Mark Spencer <markster@linux-support.net>
9  *
10  * This program is free software, distributed under the terms of
11  * the GNU General Public License
12  */
13
14 #include <sys/types.h>
15 #include <asterisk/file.h>
16 #include <asterisk/logger.h>
17 #include <asterisk/channel.h>
18 #include <asterisk/pbx.h>
19 #include <asterisk/module.h>
20 #include <stdlib.h>
21 #include <unistd.h>
22 #include <string.h>
23 #include <stdlib.h>
24
25 #include <pthread.h>
26
27
28 static char *tdesc = "Strip trailing digits";
29
30 static char *descrip =
31 "  StripLSD(count): Strips the trailing  'count'  digits  from  the  channel's\n"
32 "associated extension. For example, the  number  5551212 when stripped with a\n"
33 "count of 4 would be changed to 555.  This app always returns 0, and the PBX\n"
34 "will continue processing at the next priority for the *new* extension.\n"
35 "  So, for  example, if  priority 3 of 5551212  is  StripLSD 4, the next step\n"
36 "executed will be priority 4 of 555.  If you switch into an  extension which\n"
37 "has no first step, the PBX will treat it as though the user dialed an\n"
38 "invalid extension.\n";
39
40 static char *app = "StripLSD";
41
42 static char *synopsis = "Strip Least Significant Digits";
43
44 STANDARD_LOCAL_USER;
45
46 LOCAL_USER_DECL;
47
48 static int striplsd_exec(struct ast_channel *chan, void *data)
49 {
50   char newexten[AST_MAX_EXTENSION] = "";
51   if (!data || !atoi(data)) {
52     ast_log(LOG_DEBUG, "Ignoring, since number of digits to strip is 0\n");
53     return 0;
54   }
55   if (strlen(chan->exten) > atoi(data)) {
56     strncpy(newexten, chan->exten, strlen(chan->exten)-atoi(data));
57   }
58   strncpy(chan->exten, newexten, sizeof(chan->exten)-1);
59   return 0;
60 }
61
62 int unload_module(void)
63 {
64         STANDARD_HANGUP_LOCALUSERS;
65         return ast_unregister_application(app);
66 }
67
68 int load_module(void)
69 {
70         return ast_register_application(app, striplsd_exec, synopsis, descrip);
71 }
72
73 char *description(void)
74 {
75         return tdesc;
76 }
77
78 int usecount(void)
79 {
80         int res;
81         STANDARD_USECOUNT(res);
82         return res;
83 }
84
85 char *key()
86 {
87         return ASTERISK_GPL_KEY;
88 }