1 #include "file-io.hpp"
2 
3 #include <stdplus/print.hpp>
4 
5 #include <cstring>
6 #include <iostream>
7 
8 static void printUsage()
9 {
10     stdplus::println(stderr, "Usage: update_dhcp_status <state> <message>");
11     stdplus::println(stderr,
12                      "<state> is one of 'DONE', 'POWERCYCLE' or 'ONGOING'");
13 }
14 
15 static int genStatusCode(char* state)
16 {
17     if (std::strcmp(state, "DONE") == 0)
18     {
19         return 0;
20     }
21     else if (std::strcmp(state, "POWERCYCLE") == 0)
22     {
23         return 1;
24     }
25     else if (std::strcmp(state, "ONGOING") == 0)
26     {
27         return 2;
28     }
29 
30     return -1;
31 }
32 
33 int main(int argc, char* argv[])
34 {
35     if (argc != 3)
36     {
37         printUsage();
38         return 1;
39     }
40 
41     int statusCode = genStatusCode(argv[1]);
42 
43     if (statusCode == -1)
44     {
45         printUsage();
46         return 1;
47     }
48 
49     try
50     {
51         std::string status;
52         status.push_back(statusCode);
53         status.append(argv[2]);
54         fileWrite(statusFile, status);
55     }
56     catch (const std::exception& e)
57     {
58         stdplus::println(stderr, "Failed to update status file {}", e.what());
59         return 1;
60     }
61 
62     return 0;
63 }
64