source: git/src/message.h

Last change on this file was 0b99107, checked in by Olly Betts <olly@…>, 2 weeks ago

Eliminate old FSF addresses

Update GPL/LGPL licence files and boilerplate to direct people who
didn't receive the licence text to the FSF website, as the current
versions of the FSF licence texts now do, rather than giving a postal
address.

  • Property mode set to 100644
File size: 3.3 KB
RevLine 
[106af12]1/* message.h
[9af1d7a9]2 * Function prototypes for message.c
[6cc96a9]3 * Copyright (C) 1998-2024 Olly Betts
[846746e]4 *
[89231c4]5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
[846746e]9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
[89231c4]12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
[846746e]14 *
[89231c4]15 * You should have received a copy of the GNU General Public License
[0b99107]16 * along with this program; if not, see
17 * <https://www.gnu.org/licenses/>.
[9af1d7a9]18 */
19
20#ifndef MESSAGE_H /* only include once */
21#define MESSAGE_H
22
[8df22e9]23#ifdef __cplusplus
24extern "C" {
25#endif
26
[7f94ee7]27#include <stdarg.h>
28
[7dbc68f]29#include "filename.h"
[9af1d7a9]30
[a420b49]31#define STDERR stdout
32
[f8e03f3]33#define CHARSET_BAD        -1
[20df0487]34#define CHARSET_UTF8        0
[f8e03f3]35#define CHARSET_ISO_8859_1  1
[20df0487]36#define CHARSET_ISO_8859_2  2
37#define CHARSET_USASCII     3
38#define CHARSET_WINCP1250   4
39#define CHARSET_DOSCP850    5
40#define CHARSET_WINCP1252   6
41#define CHARSET_ISO_8859_15 15
[6a4871e]42
[25ab06b]43extern int msg_warnings; /* keep track of how many warnings we've given */
44extern int msg_errors;   /* and how many (non-fatal) errors */
[a2f9d5c]45
[cf54765]46/* The language code - e.g. "en_GB" */
[25ab06b]47extern const char *msg_lang;
[cf54765]48/* If the language code has a country specific qualification, then this will
49 * be just the language code.  Otherwise it's NULL.  e.g. "en" */
[c0a9908]50extern const char *msg_lang2;
[f2a6ce4]51
[b39e24a]52void msg_init(char *const *argv);
[9af1d7a9]53
[25ab06b]54const char *msg_cfgpth(void);
[b88b171]55const char *msg_exepth(void);
[bdfe97f]56const char *msg_appname(void);
[9af1d7a9]57
[c8fcf66]58/* Return the message string corresponding to number en */
[25ab06b]59const char *msg(int en);
[a420b49]60
[37d6b84]61/* These need to fit within DIAG_SEVERITY_MASK defined in datain.h. */
62#define DIAG_INFO       0x00
63#define DIAG_WARN       0x01
64#define DIAG_ERR        0x02
65#define DIAG_FATAL      0x03
66
[da96015]67void v_report(int severity, const char *fnm, int line, int col, int en, va_list ap);
[a420b49]68
[37d6b84]69void diag(int severity, int en, ...);
70
71#define information(...) diag(DIAG_INFO, __VA_ARGS__)
72#define warning(...) diag(DIAG_WARN, __VA_ARGS__)
73#define error(...) diag(DIAG_ERR, __VA_ARGS__)
74#define fatalerror(...) diag(DIAG_FATAL, __VA_ARGS__)
75
76void diag_in_file(int severity, const char *fnm, int line, int en, ...);
[9af1d7a9]77
[37d6b84]78#define information_in_file(...) diag_in_file(DIAG_INFO, __VA_ARGS__)
79#define warning_in_file(...) diag_in_file(DIAG_WARN, __VA_ARGS__)
80#define error_in_file(...) diag_in_file(DIAG_ERR, __VA_ARGS__)
81#define fatalerror_in_file(...) diag_in_file(DIAG_FATAL, __VA_ARGS__)
[9af1d7a9]82
[a420b49]83int select_charset(int charset_code);
[9af1d7a9]84
[8df22e9]85#ifdef __cplusplus
86}
87#endif
88
[9990aab]89/* Define MSG_SETUP_PROJ_SEARCH_PATH before including this header to enable the
90 * hooks to setup proj's search path to be relative to the executable if this
91 * is a relocatable install.
92 */
93#ifdef MSG_SETUP_PROJ_SEARCH_PATH
94/* We only need this on these platforms. */
[07a6d16]95# ifdef _WIN32
[9990aab]96#  include <proj.h>
97#  define msg_init(ARGV) do {\
98        (msg_init)(ARGV); \
[0841448]99        char* msg_init_proj_path = use_path(msg_cfgpth(), "proj");\
100        if (fDirectory(msg_init_proj_path)) {\
101            const char* msg_init_proj_path_const = msg_init_proj_path;\
102            proj_context_set_search_paths(PJ_DEFAULT_CTX, 1,\
103                                          &msg_init_proj_path_const);\
104        }\
[ae917b96]105        free(msg_init_proj_path);\
[9990aab]106    } while (0)
107# endif
108#endif
109
[9af1d7a9]110#endif /* MESSAGE_H */
Note: See TracBrowser for help on using the repository browser.