adding some stuff
git-svn-id: file:///raid/svn-personal/mokou/trunk@3 35d6bad2-6c5c-c749-ada2-a2c82cb3bd79
This commit is contained in:
parent
da66e84ceb
commit
76db5066c2
|
@ -5,7 +5,7 @@ include $(PWD)/Platform/$(PLATFORM).mk
|
||||||
.PHONY: all clean
|
.PHONY: all clean
|
||||||
.SUFFIXES: .c .o
|
.SUFFIXES: .c .o
|
||||||
|
|
||||||
OBJS = main.o log.o service.o util.o
|
OBJS = main.o log.o service.o util.o version.o
|
||||||
|
|
||||||
all: mokou$(EXEC)
|
all: mokou$(EXEC)
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,20 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "mk_service.h"
|
#include "mk_service.h"
|
||||||
|
#include "mk_log.h"
|
||||||
|
#include "mk_util.h"
|
||||||
|
#include "mk_version.h"
|
||||||
|
|
||||||
int main(int argc, char** argv){
|
int main(int argc, char** argv){
|
||||||
if(getuid() != 0){
|
if(getuid() != 0){
|
||||||
fprintf(stderr, "Run me as root.\n");
|
fprintf(stderr, "Run me as root.\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
char* log = mk_strcat3("Mokou version ", mk_get_version(), " starting up");
|
||||||
|
mk_log(log);
|
||||||
|
free(log);
|
||||||
mk_service_scan();
|
mk_service_scan();
|
||||||
}
|
}
|
||||||
|
|
8
Mokou/mk_version.h
Normal file
8
Mokou/mk_version.h
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
#ifndef __MK_VERSION_H__
|
||||||
|
#define __MK_VERSION_H__
|
||||||
|
|
||||||
|
const char* mk_get_version(void);
|
||||||
|
|
||||||
|
#endif
|
|
@ -2,8 +2,11 @@
|
||||||
|
|
||||||
#include "mk_service.h"
|
#include "mk_service.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#include "mk_log.h"
|
#include "mk_log.h"
|
||||||
#include "mk_util.h"
|
#include "mk_util.h"
|
||||||
|
@ -20,7 +23,10 @@ void mk_service_scan(void){
|
||||||
free(services[i]);
|
free(services[i]);
|
||||||
}
|
}
|
||||||
free(services);
|
free(services);
|
||||||
|
mk_log("Cleaning up the list");
|
||||||
}
|
}
|
||||||
|
services = malloc(sizeof(*services));
|
||||||
|
services[0] = NULL;
|
||||||
|
|
||||||
mk_log("Scanning the service directory.");
|
mk_log("Scanning the service directory.");
|
||||||
|
|
||||||
|
@ -33,6 +39,84 @@ void mk_service_scan(void){
|
||||||
char* str = mk_strcat("Reading ", path);
|
char* str = mk_strcat("Reading ", path);
|
||||||
mk_log(str);
|
mk_log(str);
|
||||||
free(str);
|
free(str);
|
||||||
|
|
||||||
|
FILE* f = fopen(path, "r");
|
||||||
|
if(f != NULL){
|
||||||
|
struct stat s;
|
||||||
|
stat(path, &s);
|
||||||
|
char* buffer = malloc(s.st_size + 1);
|
||||||
|
buffer[s.st_size] = 0;
|
||||||
|
fread(buffer, s.st_size, 1, f);
|
||||||
|
int i;
|
||||||
|
int incr = 0;
|
||||||
|
|
||||||
|
char* desc = NULL;
|
||||||
|
char* exec = NULL;
|
||||||
|
char* pidfile = NULL;
|
||||||
|
|
||||||
|
for(i = 0;; i++){
|
||||||
|
if(buffer[i] == '\n' || buffer[i] == 0){
|
||||||
|
char oldc = buffer[i];
|
||||||
|
buffer[i] = 0;
|
||||||
|
|
||||||
|
char* line = buffer + incr;
|
||||||
|
|
||||||
|
if(strlen(line) > 0 && line[0] != '#'){
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for(j = 0; line[j] != 0; j++){
|
||||||
|
if(line[j] == '='){
|
||||||
|
line[j] = 0;
|
||||||
|
|
||||||
|
char* key = line;
|
||||||
|
char* value = line + j + 1;
|
||||||
|
if(strcmp(key, "description") == 0){
|
||||||
|
if(desc != NULL) free(desc);
|
||||||
|
desc = mk_strdup(value);
|
||||||
|
}else if(strcmp(key, "exec") == 0){
|
||||||
|
if(exec != NULL) free(exec);
|
||||||
|
exec = mk_strdup(value);
|
||||||
|
}else if(strcmp(key, "pidfile") == 0){
|
||||||
|
if(pidfile != NULL) free(pidfile);
|
||||||
|
pidfile = mk_strdup(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
incr = i + 1;
|
||||||
|
if(oldc == 0) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
bool bad = false;
|
||||||
|
if(exec == NULL){
|
||||||
|
char* log = mk_strcat(desc == NULL ? path : desc, ": Missing exec");
|
||||||
|
mk_log(log);
|
||||||
|
free(log);
|
||||||
|
bad = true;
|
||||||
|
}
|
||||||
|
if(pidfile == NULL){
|
||||||
|
char* log = mk_strcat(desc == NULL ? path : desc, ": Missing pidfile");
|
||||||
|
mk_log(log);
|
||||||
|
free(log);
|
||||||
|
bad = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!bad){
|
||||||
|
char* log = mk_strcat3("Adding ", desc == NULL ? path : desc, " to the list");
|
||||||
|
mk_log(log);
|
||||||
|
free(log);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(desc != NULL) free(desc);
|
||||||
|
if(exec != NULL) free(exec);
|
||||||
|
if(pidfile != NULL) free(pidfile);
|
||||||
|
}
|
||||||
|
|
||||||
free(path);
|
free(path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
9
Mokou/version.c
Normal file
9
Mokou/version.c
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
#include "mk_version.h"
|
||||||
|
|
||||||
|
const char* MOKOU_VERSION = "0.0";
|
||||||
|
|
||||||
|
const char* mk_get_version(void){
|
||||||
|
return MOKOU_VERSION;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user