Ejemplo n.º 1
0
int main(const int argc, const char *argv[])
{
	int server_fd, client_fd;
	int read_size;
	short cmd_len;
	struct sockaddr addr;
	socklen_t alen;

	info_sys("backuprestore service start!");

	if ((server_fd = srv_create_sk()) < 0)
		err_sys("create socket server error");
	alen = sizeof(addr);

	info_sys("Server socket create successfully!");

	while(1){
		client_fd = accept(server_fd, (struct sockaddr*) &addr, &alen);
		if (client_fd < 0) {
			debug_sys("socket accept failed, please try again!");
			continue;
		}
		info_sys("before excute");
		while (1) {
			cmd_len = 0;
			if (readx(client_fd, &cmd_len, sizeof(cmd_len)) <= 0){
				debug_sys("cmd length read fail");
				break;
			}

			if (cmd_len < 1 || cmd_len > 2048){
				debug_sys("cmd length is not right");
				break;
			}

			if (readx(client_fd, &cmd, cmd_len) <= 0){
				debug_sys("read cmd fail");
				break;
			}
			cmd[cmd_len] = 0;
			if (excute(client_fd, cmd) < 0)
				break;
		}
		close(client_fd);
	}
	close(server_fd);
	info_sys("backuprestore service end!");
	return EXIT_SUCCESS;
}
Ejemplo n.º 2
0
int
main(int argc, char *argv[])
{
	printf("sysconfig v%s %s/%s %s " __TIME__ " " __DATE__  "\n", 
	       PACKAGE_VERSION, CONFIG_PLATFORM, CONFIG_SRCARCH, CONFIG_ARCH);

	info_cpu();
	info_sys();

	linkmap_init();


	linkmap_fini();

	return 0;
}
Ejemplo n.º 3
0
static int srv_create_sk()
{
	int lsocket;
	info_sys("Get socket from Android env!");
	lsocket = android_get_control_socket(SOCKET_PATH);
	if (lsocket < 0){ 
		debug_sys("Failed to get socket from environment");
        return -1;
    }
	
	if (listen(lsocket, QBACKLOG)) {
		debug_sys("Listen on socket failed");
        return -1;
	}
	fcntl(lsocket, F_SETFD, FD_CLOEXEC);
	return lsocket;
}
Ejemplo n.º 4
0
int change_folder_owner(char *pathSrc, uid_t userId , gid_t groupId)
{
    DIR *pDir=NULL;
    char path[PATH_LENGTH]=""; 
    struct dirent *ent = NULL;//目录属性 
    struct stat info;

    if((pDir = opendir(pathSrc)) == NULL)
    {
        return -1;
    }   

    while(NULL !=(ent=readdir(pDir)))
    {
        if(strcmp(ent->d_name,"..")==0||strcmp(ent->d_name,".")==0) //遇到子目录'.'或父母录标记'..',继续
            continue ;

 	strcpy(path, pathSrc);
	stat(path, &info);  // Error check omitted
	struct passwd *pw = getpwuid(info.st_uid);
	if(strcmp(pw->pw_name, "system") == 0){
              info_sys("backuprestore uid  = system!");
		continue;
         }

        strcat(path,"/");
        strcat(path,ent->d_name);
        chown(path, userId, groupId);
        if(4 == ent->d_type)//子目录
        {
	     change_folder_owner(path, userId, groupId);     
	    
        }
    }

    chown(pathSrc, userId, groupId);

    if(pDir != NULL)
    {
       closedir(pDir);
    }

    return 0;
}
Ejemplo n.º 5
0
static int backup(char** args , char reply[REPLY_LEN])
{
    info_sys("call backup");
    ALOGI("srcpath: %s; destpath: %s", args[0], args[1]);
    app_data_del(args[1]); // delete the file but the parent folder
    int ret = backupAppData(args[0], args[1]);
    if(ret >= 0){
        struct stat selfstat;
        stat("/data/data/com.mediatek.backuprestore", &selfstat);
        struct passwd *pw = getpwuid(selfstat.st_uid);
        if (pw != NULL)
        {
            change_folder_owner(args[1], pw->pw_uid, pw->pw_gid);
        }
        return 1;
    } else {
	  cleardir(args[1]); //if copy fail,then delete the copied file and return -1
	  return -1;
	}
}