/* * ip.hpp * this is to get the ip address of the machine and convert it to a color */ #ifndef BASHPROMPT_IP_H #define BASHPROMPT_IP_H #include "common.hpp" struct IP { int values[4]; int fromString(str s) { int pos = 0; int c = 0; for (int i=0;i<4;i++) { values[i] = 0; } for (int i=0;pos=48&&c<=57) values[i] = (values[i]*10) + (c - 48); else if (i>=3) break; else i++; } c = 0; for (int i=0;i<4;i++) { if (values[i]>255||values[i]<0) return 0; c += values[i]; } if (c == 0) return 0; return 1; } int fromEnv() { const char * env = getenv("IPStr"); if (env != NULL) return fromString(std::string(env)); return 0; } int fromCmd() { str s; const char * env = getenv("IPCmd"); if (env != NULL && fromString(docmd(env).c_str())) return 1; return fromString(docmd("hostname -i").c_str()); } int get() { int ok = fromEnv(); if (!ok)ok = fromCmd(); return ok; } str toColor() { str ret = ""; ret+= color2(int2col(values[0]), int2col(values[1])); ret+= color2(int2col(values[2]), int2col(values[3])); return ret; } str toString() { str s=""; for (int i = 0; i < 4; i++) { s+=std::to_string(values[i]); s+= "."; } s.pop_back(); return s; } }; #endif //BASHPROMPT_IP_H