1.1 --- a/program.c Sun Jan 15 17:36:19 2023 +0100
1.2 +++ b/program.c Tue Feb 28 22:33:52 2023 +0100
1.3 @@ -1,7 +1,7 @@
1.4 /*
1.5 * Code generation from interface descriptions.
1.6 *
1.7 - * Copyright (C) 2019, 2020, 2022 Paul Boddie <paul@boddie.org.uk>
1.8 + * Copyright (C) 2019, 2020, 2022, 2023 Paul Boddie <paul@boddie.org.uk>
1.9 *
1.10 * This program is free software; you can redistribute it and/or
1.11 * modify it under the terms of the GNU General Public License as
1.12 @@ -132,17 +132,19 @@
1.13 iface->output_basename);
1.14
1.15 if (client_header_fp != NULL)
1.16 - fputs(header_prologue, client_header_fp);
1.17 + fprintf(client_header_fp, header_prologue, "CLIENT", iface->name,
1.18 + "CLIENT", iface->name);
1.19
1.20 if (server_fp != NULL)
1.21 fprintf(server_fp, server_prologue, iface->output_basename,
1.22 iface->output_basename);
1.23
1.24 if (server_header_fp != NULL)
1.25 - fputs(server_header_prologue, server_header_fp);
1.26 + fprintf(server_header_fp, server_header_prologue, iface->name, iface->name);
1.27
1.28 if (interface_fp != NULL)
1.29 - fputs(header_prologue, interface_fp);
1.30 + fprintf(interface_fp, header_prologue, "INTERFACE", iface->name,
1.31 + "INTERFACE", iface->name);
1.32
1.33 /* Write the interface details. */
1.34
1.35 @@ -156,16 +158,25 @@
1.36 fclose(client_fp);
1.37
1.38 if (client_header_fp != NULL)
1.39 + {
1.40 + fprintf(client_header_fp, header_epilogue);
1.41 fclose(client_header_fp);
1.42 + }
1.43
1.44 if (server_fp != NULL)
1.45 fclose(server_fp);
1.46
1.47 if (server_header_fp != NULL)
1.48 + {
1.49 + fprintf(server_header_fp, header_epilogue);
1.50 fclose(server_header_fp);
1.51 + }
1.52
1.53 if (interface_fp != NULL)
1.54 + {
1.55 + fprintf(interface_fp, header_epilogue);
1.56 fclose(interface_fp);
1.57 + }
1.58 }
1.59
1.60 /* Generate source file content corresponding to each interface in turn. */
1.61 @@ -265,3 +276,6 @@
1.62 if (interface_fp != NULL)
1.63 write_interface_definition(iface, SERVER_ROLE, interface_fp);
1.64 }
1.65 +
1.66 +/* vim: tabstop=2 expandtab shiftwidth=2
1.67 +*/
2.1 --- a/templates.h Sun Jan 15 17:36:19 2023 +0100
2.2 +++ b/templates.h Tue Feb 28 22:33:52 2023 +0100
2.3 @@ -1,7 +1,7 @@
2.4 /*
2.5 * Template output.
2.6 *
2.7 - * Copyright (C) 2019, 2020, 2021, 2022 Paul Boddie <paul@boddie.org.uk>
2.8 + * Copyright (C) 2019, 2020, 2021, 2022, 2023 Paul Boddie <paul@boddie.org.uk>
2.9 *
2.10 * This program is free software; you can redistribute it and/or
2.11 * modify it under the terms of the GNU General Public License as
2.12 @@ -185,19 +185,24 @@
2.13
2.14
2.15
2.16 -/* General header template. */
2.17 +/* General header templates. */
2.18
2.19 #define header_prologue \
2.20 -"#pragma once\n\n" \
2.21 +"#ifndef __%s__%s__\n" \
2.22 +"#define __%s__%s__\n\n" \
2.23 "#include <l4/sys/err.h>\n" \
2.24 "#include <l4/sys/types.h>\n"
2.25
2.26 +#define header_epilogue \
2.27 +"#endif\n"
2.28 +
2.29
2.30
2.31 /* Server templates. */
2.32
2.33 #define server_header_prologue \
2.34 -"#pragma once\n\n" \
2.35 +"#ifndef __SERVER__%s__\n" \
2.36 +"#define __SERVER__%s__\n\n" \
2.37 "#include <ipc/message.h>\n" \
2.38 "#include <ipc/server.h>\n"
2.39