sms_address.c
上传用户:mei_mei897
上传日期:2007-01-05
资源大小:82k
文件大小:4k
源码类别:

手机短信编程

开发平台:

Unix_Linux

  1. /* -------------------------------------------------------------------- */
  2. /* SMS Client, send messages to mobile phones and pagers */
  3. /* */
  4. /* sms_address.c */
  5. /* */
  6. /*  Copyright (C) 1997,1998 Angelo Masci */
  7. /* */
  8. /*  This library is free software; you can redistribute it and/or */
  9. /*  modify it under the terms of the GNU Library General Public */
  10. /*  License as published by the Free Software Foundation; either */
  11. /*  version 2 of the License, or (at your option) any later version. */
  12. /* */
  13. /*  This library is distributed in the hope that it will be useful, */
  14. /*  but WITHOUT ANY WARRANTY; without even the implied warranty of */
  15. /*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU */
  16. /*  Library General Public License for more details. */
  17. /* */
  18. /*  You should have received a copy of the GNU Library General Public */
  19. /*  License along with this library; if not, write to the Free */
  20. /*  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
  21. /* */
  22. /*  You can contact the author at this e-mail address: */
  23. /* */
  24. /*  angelo@styx.demon.co.uk */
  25. /* */
  26. /* -------------------------------------------------------------------- */
  27. /* $Id: sms_address.c,v 1.5 1998/01/17 22:49:15 root Exp $
  28.    -------------------------------------------------------------------- */
  29. #include <stdio.h>
  30. #include <errno.h>
  31. #include <unistd.h>
  32. #include <string.h>
  33. #include <ctype.h>
  34. #include <stdlib.h>
  35. #if defined(LINUX)
  36. #include <getopt.h>
  37. #endif
  38. #if defined(NEXT)
  39. #include <libc.h>
  40. #endif
  41. #include "sms_list.h"
  42. #include "parserc.h"
  43. #include "common.h"
  44. /* -------------------------------------------------------------------- */
  45. #if !defined(MVERSION)
  46. #error "MVERSION undefined"
  47. #else
  48. #define VERSION MVERSION
  49. #endif
  50. /* -------------------------------------------------------------------- */
  51. void usage(char *file);
  52. int main(int, char *[]);
  53. /* -------------------------------------------------------------------- */
  54. /* -------------------------------------------------------------------- */
  55. void usage(char *file)
  56. {
  57. printf("Usage: %s [-v]n", file);
  58. printf("       %s [-l] [-d delimeter]  name[,name]n", file);
  59. }
  60. /* -------------------------------------------------------------------- */
  61. /* -------------------------------------------------------------------- */
  62. int main(int argc, char *argv[])
  63. {
  64. int c,
  65. long_flag,
  66. delimeter;
  67. SMS_list
  68. *node,
  69. *numbers;
  70. FILE *fp[2];
  71. char
  72. *sms_default_service = NULL;
  73. /* ---------------------------- */
  74. delimeter = ':';
  75. long_flag = FALSE;
  76. while ((c = getopt (argc, argv, "vld:")) != -1)
  77.         {
  78.                 switch (c)
  79.                 { case 'v':
  80. printf("%s %sn", argv[0], VERSION);
  81.                                 exit(0);
  82.                  case 'l':
  83. long_flag = TRUE;
  84. break;
  85.                  case 'd':
  86. if (sms_strlen(optarg) > 1)
  87.                                 { fprintf(stderr, "Invalid delimeter `%s'n", optarg);
  88.                                 usage(argv[0]);
  89.                                  exit(-1);
  90. }
  91. delimeter = optarg[0];
  92. break;
  93.                         case '?':
  94. #if !defined(NEXT)
  95.                                 fprintf(stderr, "Unknown option `-%c'n", optopt);
  96. #endif
  97.                                 usage(argv[0]);
  98.                                 exit(-1);
  99.                         default:
  100.                                 abort ();
  101.                 }
  102.         }
  103.                         
  104. /* ---------------------------- */
  105. /* Get Default SERVICE  */
  106. SMS_dual_openrc(fp);
  107. if (sms_default_service == NULL)
  108. {
  109. sms_default_service = SMS_dual_get_smsrc_value(fp, "SMS_default_service");
  110. if (sms_default_service == NULL)
  111. {
  112. fprintf(stderr, "Could not find SMS_default_servicen");
  113. exit(-1);
  114. }
  115. }
  116. SMS_dual_closerc(fp);
  117. /* ---------------------------- */
  118. /* Get and expand NAMES|NUMBERS */
  119. SMS_dual_openrc(fp);
  120. numbers = SMS_expandnumber(fp, "<NULL>", argv[optind], sms_default_service);
  121. SMS_dual_closerc(fp);
  122. /* ---------------------------- */
  123. /* Check NAMES|NUMBERS */
  124. if (validate_expanded_numbers(numbers))
  125. {
  126. fprintf(stderr, "ERROR: Expanding namesn");
  127. exit(-1);
  128. }
  129. /* ---------------------------- */
  130. node = get_first(numbers);
  131. while (node != NULL)
  132. {
  133. printf("%s%c%s%c%sn", node->name, 
  134.                        delimeter, 
  135.                        node->service, 
  136.                        delimeter,
  137.                        node->number);
  138. node = get_next(node);
  139. }
  140. free_list(numbers);
  141. return 0;
  142. }