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