You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.6 KiB

  1. From d4a484db1684cce15966bb722644416f90253ea7 Mon Sep 17 00:00:00 2001
  2. From: Yousong Zhou <yszhou4tech@gmail.com>
  3. Date: Thu, 30 Apr 2015 13:53:11 +0800
  4. Subject: [PATCH 5/7] xl2tpd-control: cleaup result file atexit().
  5. ---
  6. xl2tpd-control.c | 20 +++++++++++++-------
  7. 1 file changed, 13 insertions(+), 7 deletions(-)
  8. --- a/xl2tpd-control.c
  9. +++ b/xl2tpd-control.c
  10. @@ -35,6 +35,9 @@
  11. #define TUNNEL_REQUIRED 1
  12. #define TUNNEL_NOT_REQUIRED 0
  13. +char result_filename[128];
  14. +int result_fd = -1;
  15. +
  16. int log_level = ERROR_LEVEL;
  17. void print_error (int level, const char *fmt, ...);
  18. @@ -117,6 +120,14 @@ void help()
  19. );
  20. }
  21. +void cleanup(void)
  22. +{
  23. + /* cleaning up */
  24. + if (result_fd >= 0)
  25. + close (result_fd);
  26. + unlink (result_filename);
  27. +}
  28. +
  29. int main (int argc, char *argv[])
  30. {
  31. char* control_filename = NULL;
  32. @@ -195,11 +206,11 @@ int main (int argc, char *argv[])
  33. FILE* mesf = fmemopen (buf, CONTROL_PIPE_MESSAGE_SIZE, "w");
  34. /* create result pipe for reading */
  35. - char result_filename[128];
  36. snprintf (result_filename, 128, RESULT_FILENAME_FORMAT, getpid());
  37. unlink (result_filename);
  38. mkfifo (result_filename, 0600);
  39. - int result_fd = open (result_filename, O_RDONLY | O_NONBLOCK, 0600);
  40. + atexit(cleanup);
  41. + result_fd = open (result_filename, O_RDONLY | O_NONBLOCK, 0600);
  42. if (result_fd < 0)
  43. {
  44. print_error (ERROR_LEVEL,
  45. @@ -293,11 +304,6 @@ int main (int argc, char *argv[])
  46. );
  47. printf ("%s", rbuf);
  48. - /* cleaning up */
  49. -
  50. - close (result_fd);
  51. - unlink (result_filename);
  52. -
  53. return command_result_code;
  54. }