DtGetMessage.c 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * CDE - Common Desktop Environment
  3. *
  4. * Copyright (c) 1993-2012, The Open Group. All rights reserved.
  5. *
  6. * These libraries and programs are free software; you can
  7. * redistribute them and/or modify them under the terms of the GNU
  8. * Lesser General Public License as published by the Free Software
  9. * Foundation; either version 2 of the License, or (at your option)
  10. * any later version.
  11. *
  12. * These libraries and programs are distributed in the hope that
  13. * they will be useful, but WITHOUT ANY WARRANTY; without even the
  14. * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  15. * PURPOSE. See the GNU Lesser General Public License for more
  16. * details.
  17. *
  18. * You should have received a copy of the GNU Lesser General Public
  19. * License along with these libraries and programs; if not, write
  20. * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
  21. * Floor, Boston, MA 02110-1301 USA
  22. */
  23. /* $TOG: DtGetMessage.c /main/10 1998/07/30 12:12:25 mgreess $ */
  24. /*
  25. * (c) Copyright 1995 Digital Equipment Corporation.
  26. * (c) Copyright 1993, 1994, 1995 Hewlett-Packard Company
  27. * (c) Copyright 1993, 1994, 1995 International Business Machines Corp.
  28. * (c) Copyright 1993, 1994, 1995 Sun Microsystems, Inc.
  29. * (c) Copyright 1993, 1994, 1995 Novell, Inc.
  30. * (c) Copyright 1995 FUJITSU LIMITED.
  31. * (c) Copyright 1995 Hitachi.
  32. */
  33. /******************************************************************************
  34. *
  35. * File Name: DtGetMessage.c
  36. *
  37. * Contains the function for getting localized strings.
  38. *
  39. *****************************************************************************/
  40. #ifndef NO_MESSAGE_CATALOG
  41. #include <stdio.h>
  42. #include <stdlib.h>
  43. #include <string.h>
  44. #include <Dt/MsgCatP.h>
  45. #include "DtSvcLock.h"
  46. /*****************************************************************************
  47. *
  48. * Function: Dt11GetMessage
  49. *
  50. * Parameters:
  51. *
  52. * char *filename - Filename to open.
  53. *
  54. * int set - The message catalog set number.
  55. *
  56. * int n - The message number.
  57. *
  58. * char *s - The default message if the message is not
  59. * retrieved from a message catalog.
  60. *
  61. * Returns: the string for set 'set' and number 'n'.
  62. *
  63. *****************************************************************************/
  64. char *
  65. Dt11GetMessage(
  66. char *filename,
  67. int set,
  68. int n,
  69. char *s)
  70. {
  71. char *msg;
  72. static int first = 1;
  73. static nl_catd nlmsg_fd;
  74. static char *nlmsg_filename = NULL;
  75. _DtSvcProcessLock();
  76. if ( NULL == nlmsg_filename || 0 != strcmp(nlmsg_filename, filename) )
  77. {
  78. nlmsg_fd = CATOPEN(filename, NL_CAT_LOCALE);
  79. if (nlmsg_filename)
  80. {
  81. free(nlmsg_filename);
  82. nlmsg_filename = NULL;
  83. }
  84. nlmsg_filename = strdup(filename);
  85. }
  86. msg=CATGETS(nlmsg_fd,set,n,s);
  87. _DtSvcProcessUnlock();
  88. return (msg);
  89. }
  90. #endif