diff options
| author | tomsmeding <hallo@tomsmeding.nl> | 2015-06-23 20:28:29 +0200 | 
|---|---|---|
| committer | tomsmeding <hallo@tomsmeding.nl> | 2015-06-23 20:28:29 +0200 | 
| commit | 51b3ea69321fb76427027529c198a668941ede01 (patch) | |
| tree | a29a5687a375a55b01cf2fe8924400c78026af3a | |
| parent | d0554a4fbbd238203835664eb60a556e95329d7b (diff) | |
Friendlier interface through optional command-line arguments
| -rw-r--r-- | timerserver.cpp | 63 | 
1 files changed, 38 insertions, 25 deletions
diff --git a/timerserver.cpp b/timerserver.cpp index df5389a..881af9a 100644 --- a/timerserver.cpp +++ b/timerserver.cpp @@ -94,9 +94,32 @@ void sendwaypoints(unsigned int sock,vector<pair<time_t,string>> &waypoints){  	sendall(sock,s.c_str(),len);  } -void act_server(void){ +unsigned int getclientsock(void){ +	unsigned int s; +	struct sockaddr_un remote; +	s=socket(AF_UNIX,SOCK_STREAM,0); +	if(s==(unsigned int)-1){ +		perror("socket"); +		exit(1); +	} +	remote.sun_family=AF_UNIX; +	strcpy(remote.sun_path,SOCKET_PATH); +	if(connect(s,(struct sockaddr*)&remote,strlen(SOCKET_PATH)+1+sizeof(remote.sun_family))==-1){ +		perror("connect"); +		exit(1); +	} +	return s; +} + +void act_server(int numargs,char **args){ //args == argv+1, numargs == argc-1  	vector<pair<time_t,string>> waypoints; -	addwaypoint(waypoints,"Start"); +	if(numargs){ +		stringstream ss; +		for(int i=0;i<numargs;i++)ss<<(i?" ":"")<<args[i]; +		string line=ss.str(); +		cout<<"Timer description: "<<line<<endl; +		addwaypoint(waypoints,line.c_str()); +	} else addwaypoint(waypoints,"Start");  	pid_t pid=fork();  	if(pid==-1){  		perror("fork"); @@ -116,7 +139,7 @@ void act_server(void){  	atexit(unlink_socketpath);  	unsigned int s,s2;  	s=socket(AF_UNIX,SOCK_STREAM,0); -	if(s==-1){ +	if(s==(unsigned int)-1){  		perror("socket");  		exit(1);  	} @@ -167,23 +190,6 @@ void act_server(void){  	}  } -unsigned int getclientsock(void){ -	unsigned int s; -	struct sockaddr_un remote; -	s=socket(AF_UNIX,SOCK_STREAM,0); -	if(s==-1){ -		perror("socket"); -		exit(1); -	} -	remote.sun_family=AF_UNIX; -	strcpy(remote.sun_path,SOCKET_PATH); -	if(connect(s,(struct sockaddr*)&remote,strlen(SOCKET_PATH)+1+sizeof(remote.sun_family))==-1){ -		perror("connect"); -		exit(1); -	} -	return s; -} -  void act_client_timerstop(void){  	unsigned int s=getclientsock();  	char buf[5]; @@ -233,11 +239,18 @@ void act_client_timerstatus(void){  	cout<<ctime(&tim)<<flush;  } -void act_client_timerwaypoint(void){ +void act_client_timerwaypoint(int numargs,char **args){  	unsigned int s=getclientsock(); -	cout<<"Enter the description for this waypoint: "<<flush;  	string line; -	getline(cin,line); +	if(numargs){ +		stringstream ss; +		for(int i=0;i<numargs;i++)ss<<(i?" ":"")<<args[i]; +		line=ss.str(); +		cout<<"Waypoint description: "<<line<<endl; +	} else { +		cout<<"Enter the description for this waypoint: "<<flush; +		getline(cin,line); +	}  	const int buflen=4+1+line.size();  	char buf[buflen];  	buf[0]=0; @@ -260,11 +273,11 @@ int main(int argc,char **argv){  	if(strendequ(argv[0],"timerstop")){  		act_client_timerstop();  	} else if(strendequ(argv[0],"timerwaypoint")||strendequ(argv[0],"timerwp")){ -		act_client_timerwaypoint(); +		act_client_timerwaypoint(argc-1,argv+1);  	} else if(strendequ(argv[0],"timerstatus")){  		act_client_timerstatus();  	} else if(strendequ(argv[0],"timer")||strendequ(argv[0],"timerserver")){ -		act_server(); +		act_server(argc-1,argv+1);  	} else {  		cerr<<"Unknown calling name \""<<argv[0]<<"\"!"<<endl;  		return 1;  | 
