Example #1
0
File: path.c Project: jwise/kgtd
/* @brief draws one path square
 *
 * XXX lame - alternate algorithms gladly accepted */
static void draw_one(int cx, int cy, path_t *cur, path_t *prev)
{
	int rel_prev, rel_next;
	float x = cur->pos.x, y = cur->pos.y;

	rel_prev = rel_dir(cx, cy, prev);
	rel_next = rel_dir(cx, cy, cur->next);

	if(rel_prev != DIR_UP) {
		if(rel_next == DIR_UP)
			glColor3f(0.1, 0.1, 0.1);
		else
			glColor3f(1.0, 1.0, 1.0);

		glVertex2f(x + GRID_SIZE/2, y + GRID_SIZE/2);
		glVertex2f(x - GRID_SIZE/2, y + GRID_SIZE/2);
	}

	if(rel_prev != DIR_LEFT) {
		if(rel_next == DIR_LEFT)
			glColor3f(0.1, 0.1, 0.1);
		else
			glColor3f(1.0, 1.0, 1.0);

		glVertex2f(x - GRID_SIZE/2, y + GRID_SIZE/2);
		glVertex2f(x - GRID_SIZE/2, y - GRID_SIZE/2);
	}

	if(rel_prev != DIR_DOWN) {
		if(rel_next == DIR_DOWN)
			glColor3f(0.1, 0.1, 0.1);
		else
			glColor3f(1.0, 1.0, 1.0);

		glVertex2f(x - GRID_SIZE/2, y - GRID_SIZE/2);
		glVertex2f(x + GRID_SIZE/2, y - GRID_SIZE/2);
	}

	if(rel_prev != DIR_RIGHT) {
		if(rel_next == DIR_RIGHT)
			glColor3f(0.1, 0.1, 0.1);
		else
			glColor3f(1.0, 1.0, 1.0);

		glVertex2f(x + GRID_SIZE/2, y - GRID_SIZE/2);
		glVertex2f(x + GRID_SIZE/2, y + GRID_SIZE/2);
	}
}
Example #2
0
error_code_t cd_local(char *local_cwd, const char *command)
{
    char *dir = NULL;

    if (command[3] != '\0' && command[3] != ' ')
        return INV_CMD;
        
    if (command[3] == ' ')
    {
        dir = rel_dir(&command[4]);
        if (chdir(dir) == -1)
        {
            if (errno == EACCES)
                return NO_PERMISSION;
            if (errno == ENOENT || errno == ENOTDIR)
                return NO_DIR;
            else
                return -1;
        }
        free(dir);
        getcwd(local_cwd, 1024);
    }
    
    return OK;
}
Example #3
0
void cd_server(receiver_param *rp, struct frame_t *frame_info)
{
    char *dir = rel_dir(frame_info->data);
    char new_path[1024];
    
    if (chdir(dir) == -1)
    {
        if (errno == EACCES)
            send_error(rp->source_sd, NO_PERMISSION, 0);
        else if (errno == ENOENT || errno == ENOTDIR)
            send_error(rp->source_sd, NO_DIR, 0);
        else
            perror("WARNING");
    }
    else
        send_ack(rp->source_sd, 0);
    
    getcwd(new_path, 1024);
    
    free(dir);
}