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