1 /******************************************************************************
2  *
3  * Module Name: efihello - very simple ACPICA/EFI integration example
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2017, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43 
44 #include "acpi.h"
45 #include "accommon.h"
46 #include "acapps.h"
47 
48 
49 #define LINE_SIZE           256
50 static char                 LineBuffer[LINE_SIZE];
51 
52 /******************************************************************************
53  *
54  * FUNCTION:    main
55  *
56  * PARAMETERS:  argc/argv           - Standard argc/argv
57  *
58  * RETURN:      Status
59  *
60  * DESCRIPTION: C main function for efihello
61  *
62  ******************************************************************************/
63 
64 #ifndef _GNU_EFI
65 int ACPI_SYSTEM_XFACE
66 main (
67     int                     argc,
68     char                    *argv[])
69 #else
70 int ACPI_SYSTEM_XFACE
71 acpi_main (
72     int                     argc,
73     char                    *argv[])
74 #endif
75 {
76     ACPI_FILE               File;
77     BOOLEAN                 DoCloseFile = FALSE;
78     char                    *Result;
79 
80 
81     AcpiOsInitialize ();
82 
83     printf ("argc=%d\n", argc);
84 
85     if (argc > 1)
86     {
87         File = fopen (argv[1], "r");
88         if (!File)
89         {
90             printf ("Failed to open %s.\n", argv[1]);
91             return (-1);
92         }
93         DoCloseFile = TRUE;
94     }
95     else
96     {
97         File = stdin;
98     }
99 
100     while (1)
101     {
102         Result = fgets (LineBuffer, LINE_SIZE, File);
103         if (!Result)
104         {
105             printf ("Failed to read %s.\n", argv[1]);
106             fclose (File);
107             return (-2);
108         }
109 
110         printf ("%s", LineBuffer);
111 
112         if (strncmp (Result, "exit", 4) == 0)
113         {
114             break;
115         }
116     }
117 
118 
119     if (DoCloseFile)
120     {
121         fclose (File);
122     }
123     return (0);
124 }
125