Ejemplo n.º 1
0
void execute_load(char* command, ListT* tasks, TaskT** current_task) {

    ListT* files;

    //check if we should save
    if (tasks != NULL && tasks->size > 0) {

        char* save_before_load;
        printf("Save before load? (y)/n? ");
        get_user_input(&save_before_load);

        if (save_before_load != NULL && strlen(save_before_load) > 0
            && save_before_load[0] == 'y' || save_before_load[0] == 'Y') {
            printf("saving\n");
            execute_save(command, tasks, current_task);
        }
    }

    files = get_loadables(YES);

    if (files->size > 0) {
        ListT* _tasks;
        TaskT* loaded_task;
        int user_selection;
        char *filename, *abs_file;;


        while ((user_selection = get_numeric_input("Choose which file to load? ")) < 0 || user_selection >= files->size) ;
        DEBUG("user_selection %d", user_selection);
        printf("\n\n");

        filename = list_obj_at_idx(files, user_selection);
        abs_file = malloc(strlen(filename) + 20);
        sprintf(abs_file, "tasks/%s", filename);

        //destroy all tasks in memory
        list_empty(tasks, YES);
        _tasks = task_read(abs_file);
        list_copy(tasks, _tasks);
        *current_task = tasks != NULL && tasks->size > 0 ? list_obj_at_idx(tasks, 0) : NULL;

        list_destroy(_tasks);
        free(abs_file);
    } else {
        puts("No files to load.");
    }

    list_destroy(files);
}
Ejemplo n.º 2
0
int main(int argc, char **argv)
{
	const char *chip_str, *task, *reg_str;
	int chip;
	unsigned int reg, mask, set, value;
	int err;

	if (argc != 4 && argc != 5 && argc != 6)
		goto err_usage;
	chip_str = argv[1];
	task = argv[2];
	reg_str = argv[3];

	if (strcasecmp(chip_str, "retu") == 0)
		chip = CHIP_RETU;
	else if (strcasecmp(chip_str, "tahvo") == 0)
		chip = CHIP_TAHVO;
	else
		goto err_usage;

	err = str2uint(reg_str, &reg);
	if (err)
		goto err_usage;

	if (strcasecmp(task, "read") == 0) {
		if (argc != 4)
			goto err_usage;
		err = task_read(chip, reg, &value);
		if (err) {
			fprintf(stderr, "Failed to read %s register 0x%02X\n",
				chip2str(chip), reg);
			return 1;
		}
		printf("0x%04X\n", value);
	} else if (strcasecmp(task, "write") == 0) {
		if (argc != 5)
			goto err_usage;
		err = str2uint(argv[4], &value);
		if (err)
			goto err_usage;
		err = task_write(chip, reg, value);
		if (err) {
			fprintf(stderr, "Failed to write %s register 0x%02X\n",
				chip2str(chip), reg);
			return 1;
		}
	} else if (strcasecmp(task, "maskset") == 0) {
		if (argc != 6)
			goto err_usage;
		err = str2uint(argv[4], &mask);
		err |= str2uint(argv[5], &set);
		if (err)
			goto err_usage;
		err = task_maskset(chip, reg, mask, set);
		if (err) {
			fprintf(stderr, "Failed to maskset %s register 0x%02X\n",
				chip2str(chip), reg);
			return 1;
		}
	} else
		goto err_usage;

	return 0;

err_usage:
	usage(stderr, argc, argv);
	return 1;
}