11e76060aSYuxiao Zhang #include "file-io.hpp" 21e76060aSYuxiao Zhang 31e76060aSYuxiao Zhang #include <stdplus/print.hpp> 41e76060aSYuxiao Zhang 51e76060aSYuxiao Zhang #include <cstring> 61e76060aSYuxiao Zhang #include <iostream> 71e76060aSYuxiao Zhang 81e76060aSYuxiao Zhang static void printUsage() 91e76060aSYuxiao Zhang { 101e76060aSYuxiao Zhang stdplus::println(stderr, "Usage: update_dhcp_status <state> <message>"); 11*b86429c4SYuxiao Zhang stdplus::println( 12*b86429c4SYuxiao Zhang stderr, 13*b86429c4SYuxiao Zhang "<state> is one of 'DONE', 'POWERCYCLE', 'REBOOT' or 'ONGOING'"); 141e76060aSYuxiao Zhang } 151e76060aSYuxiao Zhang 161e76060aSYuxiao Zhang static int genStatusCode(char* state) 171e76060aSYuxiao Zhang { 181e76060aSYuxiao Zhang if (std::strcmp(state, "DONE") == 0) 191e76060aSYuxiao Zhang { 201e76060aSYuxiao Zhang return 0; 211e76060aSYuxiao Zhang } 221e76060aSYuxiao Zhang else if (std::strcmp(state, "POWERCYCLE") == 0) 231e76060aSYuxiao Zhang { 241e76060aSYuxiao Zhang return 1; 251e76060aSYuxiao Zhang } 261e76060aSYuxiao Zhang else if (std::strcmp(state, "ONGOING") == 0) 271e76060aSYuxiao Zhang { 281e76060aSYuxiao Zhang return 2; 291e76060aSYuxiao Zhang } 30*b86429c4SYuxiao Zhang else if (std::strcmp(state, "REBOOT") == 0) 31*b86429c4SYuxiao Zhang { 32*b86429c4SYuxiao Zhang return 3; 33*b86429c4SYuxiao Zhang } 341e76060aSYuxiao Zhang 351e76060aSYuxiao Zhang return -1; 361e76060aSYuxiao Zhang } 371e76060aSYuxiao Zhang 381e76060aSYuxiao Zhang int main(int argc, char* argv[]) 391e76060aSYuxiao Zhang { 401e76060aSYuxiao Zhang if (argc != 3) 411e76060aSYuxiao Zhang { 421e76060aSYuxiao Zhang printUsage(); 431e76060aSYuxiao Zhang return 1; 441e76060aSYuxiao Zhang } 451e76060aSYuxiao Zhang 461e76060aSYuxiao Zhang int statusCode = genStatusCode(argv[1]); 471e76060aSYuxiao Zhang 481e76060aSYuxiao Zhang if (statusCode == -1) 491e76060aSYuxiao Zhang { 501e76060aSYuxiao Zhang printUsage(); 511e76060aSYuxiao Zhang return 1; 521e76060aSYuxiao Zhang } 531e76060aSYuxiao Zhang 541e76060aSYuxiao Zhang try 551e76060aSYuxiao Zhang { 561e76060aSYuxiao Zhang std::string status; 571e76060aSYuxiao Zhang status.push_back(statusCode); 581e76060aSYuxiao Zhang status.append(argv[2]); 591e76060aSYuxiao Zhang fileWrite(statusFile, status); 601e76060aSYuxiao Zhang } 611e76060aSYuxiao Zhang catch (const std::exception& e) 621e76060aSYuxiao Zhang { 631e76060aSYuxiao Zhang stdplus::println(stderr, "Failed to update status file {}", e.what()); 641e76060aSYuxiao Zhang return 1; 651e76060aSYuxiao Zhang } 661e76060aSYuxiao Zhang 671e76060aSYuxiao Zhang return 0; 681e76060aSYuxiao Zhang } 69