struct obj_data *get_obj_vis_accessible(struct char_data *ch, char *name) { struct obj_data *i; int j, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp; strcpy(tmpname,name); tmp = tmpname; if(!(number = get_number(&tmp))) return(0); /* scan items carried */ for (i = ch->carrying, j=1; i && j<=number; i = i->next_content) if (isname(tmp, i->name) && CAN_SEE_OBJ(ch, i)) if (j == number) return(i); else j++; for (i = real_roomp(ch->in_room)->contents; i && j<=number; i = i->next_content) if (isname(tmp, i->name) && CAN_SEE_OBJ(ch, i)) if (j==number) return(i); else j++; return 0; }
void shopping_list(char *arg, struct char_data *ch, struct char_data * keeper, int shop_nr) { char buf[MAX_STRING_LENGTH], name[MAX_INPUT_LENGTH]; struct obj_data *obj, *last_obj = 0; int cnt = 0, index = 0; bool found = FALSE; if (!(is_ok(keeper, ch, shop_nr))) return; if (SHOP_SORT(shop_nr) < IS_CARRYING_N(keeper)) sort_keeper_objs(keeper, shop_nr); one_argument(arg, name); strcpy(buf, " ## Available Item Cost\n\r"); strcat(buf, "-------------------------------------------------------------------------\n\r"); if (keeper->carrying) for (obj = keeper->carrying; obj; obj = obj->next_content) if (CAN_SEE_OBJ(ch, obj) && (obj->obj_flags.cost > 0)) { if (!last_obj) { last_obj = obj; cnt = 1; } else if (same_obj(last_obj, obj)) cnt++; else { index++; if (!(*name) || isname(name, last_obj->name)) { strcat(buf, list_object(ch, last_obj, cnt, index, shop_nr)); found = TRUE; } cnt = 1; last_obj = obj; } } index++; if (!last_obj) stc("Currently, there is nothing for sale.\r\n", ch); else if (*name && !found) stc("Presently, none of those are for sale.\r\n", ch); else { if (!(*name) || isname(name, last_obj->name)) strcat(buf, list_object(ch, last_obj, cnt, index, shop_nr)); page_string(ch->desc, buf, 1); } }
/*search the entire world for an object, and return a pointer */ struct obj_data *get_obj_vis(struct char_data *ch, char *name) { struct obj_data *i; int j, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp; /* scan items carried */ if ( ( i = get_obj_in_list_vis(ch, name, ch->carrying) ) != NULL ) return(i); /* scan room */ if ( ( i = get_obj_in_list_vis(ch, name, world[ch->in_room].contents) ) != NULL ) return(i); strcpy(tmpname,name); tmp = tmpname; if ( ( number = get_number(&tmp) ) == 0 ) return(0); /* ok.. no luck yet. scan the entire obj list */ for (i = object_list, j = 1; i && (j <= number); i = i->next) if (isname(tmp, i->name)) if (CAN_SEE_OBJ(ch, i)) { if (j == number) return(i); j++; } return(0); }
struct char_data *get_char_vis(struct char_data *ch, char *name) { struct char_data *i; int j, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp; /* check location */ if ( ( i = get_char_room_vis(ch, name) ) != 0 ) return(i); strcpy(tmpname,name); tmp = tmpname; if(!(number = get_number(&tmp))) return(0); for (i = character_list, j = 1; i && (j <= number); i = i->next) if (isname(tmp, GET_NAME(i))) if (CAN_SEE(ch, i)) { if (j == number) return(i); j++; } return(0); }
int Board_show_board(int board_type, struct char_data *ch, char *arg, struct obj_data *board) { int i; char tmp[MAX_STRING_LENGTH], buf[MAX_STRING_LENGTH]; if (!ch->desc) return (0); one_argument(arg, tmp); if (!*tmp || !isname(tmp, board->name)) return (0); if (GET_LEVEL(ch) < READ_LVL(board_type)) { send_to_char(ch, "You try but fail to understand the holy words.\r\n"); return (1); } act("$n studies the board.", TRUE, ch, 0, 0, CommTarget::TO_ROOM); if (!num_of_msgs[board_type]) send_to_char(ch, "This is a bulletin board. Usage: READ/REMOVE <messg #>, WRITE <header>.\r\nThe board is empty.\r\n"); else { size_t len = 0; int nlen; len = snprintf(buf, sizeof(buf), "This is a bulletin board. Usage: READ/REMOVE <messg #>, WRITE <header>.\r\n" "You will need to look at the board to save your message.\r\n" "There are %d messages on the board.\r\n", num_of_msgs[board_type]); #if NEWEST_AT_TOP for (i = num_of_msgs[board_type] - 1; i >= 0; i--) { if (!MSG_HEADING(board_type, i)) goto fubar; nlen = snprintf(buf + len, sizeof(buf) - len, "%-2d : %s\r\n", num_of_msgs[board_type] - i, MSG_HEADING(board_type, i)); if (len + nlen >= sizeof(buf) || nlen < 0) break; len += nlen; } #else for (i = 0; i < num_of_msgs[board_type]; i++) { if (!MSG_HEADING(board_type, i)) goto fubar; nlen = snprintf(buf + len, sizeof(buf) - len, "%-2d : %s\r\n", i + 1, MSG_HEADING(board_type, i)); if (len + nlen >= sizeof(buf) || nlen < 0) break; len += nlen; } #endif page_string(ch->desc, buf, TRUE); } return (1); fubar: log("SYSERR: Board %d is fubar'd.", board_type); send_to_char(ch, "Sorry, the board isn't working.\r\n"); return (1); }
int board_show_board(struct char_data *ch, char *arg) { int i; char buf[MAX_STRING_LENGTH], tmp[MAX_INPUT_LENGTH]; one_argument(arg, tmp); if (!*tmp || !isname(tmp, "board bulletin")) return(0); act("$n studies the board.", TRUE, ch, 0, 0, TO_ROOM); strcpy(buf, "This is a bulletin board. Usage: READ/REMOVE <messg #>, WRITE <header>\r\n"); if (!msg_num) strcat(buf, "The board is empty.\r\n"); else { sprintf(buf + strlen(buf), "There are %d messages on the board.\r\n", msg_num); for (i = 0; i < msg_num; i++) sprintf(buf + strlen(buf), "%-2d : %s\r\n", i + 1, head[i]); } page_string(ch->desc, buf, 1); return(1); }
struct char_data *get_char_world_vis(struct char_data *ch, char *name, int *number) { struct char_data *i; int num; if (!number) { number = # num = get_number(&name); } if ((i = get_char_room_vis(ch, name, number)) != NULL) return (i); if (*number == 0) return get_player_vis(ch, name, NULL, 0); for (i = character_list; i && *number; i = i->next) { if (IN_ROOM(ch) == IN_ROOM(i)) continue; if (!isname(name, i->player.name)) continue; if (!CAN_SEE(ch, i)) continue; if (--(*number) != 0) continue; return (i); } return (NULL); }
/* search the entire world for an object, and return a pointer */ struct obj_data *get_obj_vis(struct char_data * ch, char *name) { struct obj_data *i; int j = 0, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp = tmpname; /* scan items carried */ if ((i = get_obj_in_list_vis(ch, name, ch->carrying))) return i; /* scan room */ if ((i = get_obj_in_list_vis(ch, name, world[ch->in_room].contents))) return i; strcpy(tmp, name); if (!(number = get_number(&tmp))) { number = 1; tmp = name; } /* ok.. no luck yet. scan the entire obj list */ for (i = object_list; i && (j <= number); i = i->next) if (isname(tmp, i->name)) if (CAN_SEE_OBJ(ch, i)) if (++j == number) return i; return NULL; }
struct obj_data *get_obj_vis_world(struct char_data *ch, char *name, int *count) { struct obj_data *i; int j, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp; strcpy(tmpname,name); tmp = tmpname; if(!(number = get_number(&tmp))) return(0); j = count ? *count : 1; /* ok.. no luck yet. scan the entire obj list */ for (i = object_list; i && (j <= number); i = i->next) if (isname(tmp, i->name)) if (CAN_SEE_OBJ(ch, i)) { if (j == number) return(i); j++; } if (count) *count = j; return(0); }
struct obj_data *get_object_in_equip_vis(struct char_data * ch, char *arg, struct obj_data * equipment[], int *j) { int number, tot = 0; char tmpname[MAX_INPUT_LENGTH]; char *tmp = tmpname; strcpy(tmp, arg); if (!(number = get_number(&tmp))) { number = 1; tmp = arg; } for ((*j) = 0; (*j) < NUM_WEARS; (*j)++) if (equipment[(*j)]) if (CAN_SEE_OBJ(ch, equipment[(*j)]) && !hidden_eq(ch, equipment[(*j)])) if (isname(tmp, equipment[(*j)]->name)) { tot ++; if (tot == number) { return (equipment[(*j)]); } } return NULL; }
gchar *unique_filename(const gchar *path, const gchar *ext, const gchar *divider, gint pad) { gchar *unique; gint n = 1; if (!ext) ext = ""; if (!divider) divider = ""; unique = g_strconcat(path, ext, NULL); while (isname(unique)) { g_free(unique); if (pad) { unique = g_strdup_printf("%s%s%03d%s", path, divider, n, ext); } else { unique = g_strdup_printf("%s%s%d%s", path, divider, n, ext); } n++; if (n > 999) { /* well, we tried */ g_free(unique); return NULL; } } return unique; }
/* get a character from anywhere in the world, doesn't care much about being in the same room... */ struct char_data *get_char_vis_world(struct char_data *ch, char *name, int *count) { struct char_data *i; int j, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp; strcpy(tmpname,name); tmp = tmpname; if(!(number = get_number(&tmp))) return(0); j = count ? *count : 1; for (i = character_list; i && (j <= number); i = i->next) if (isname(tmp, GET_NAME(i))) if (CAN_SEE(ch, i)) { if (j == number) return(i); j++; } if (count) *count = j; return 0; }
gboolean metadata_write_queue_confirm(gboolean force_dialog, FileUtilDoneFunc done_func, gpointer done_data) { GList *work; GList *to_approve = NULL; work = metadata_write_queue; while (work) { FileData *fd = work->data; work = work->next; if (!isname(fd->path)) { /* ignore deleted files */ metadata_write_queue_remove(fd); continue; } if (fd->change) continue; /* another operation in progress, skip this file for now */ to_approve = g_list_prepend(to_approve, file_data_ref(fd)); } file_util_write_metadata(NULL, to_approve, NULL, force_dialog, done_func, done_data); return (metadata_write_queue != NULL); }
/* search the entire world for an object, and return a pointer */ struct obj_data *get_obj_vis(struct char_data *ch, char *name, int *number) { struct obj_data *i; int num; if (!number) { number = # num = get_number(&name); } if (*number == 0) return (NULL); /* scan items carried */ if ((i = get_obj_in_list_vis(ch, name, number, ch->carrying)) != NULL) return (i); /* scan room */ if ((i = get_obj_in_list_vis(ch, name, number, world[IN_ROOM(ch)].contents)) != NULL) return (i); /* ok.. no luck yet. scan the entire obj list */ for (i = object_list; i && *number; i = i->next) if (isname(name, i->name)) if (CAN_SEE_OBJ(ch, i)) if (--(*number) == 0) return (i); return (NULL); }
struct char_data *get_char_vis(struct char_data * ch, char *name) { struct char_data *i; int j = 0, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp = tmpname; /* check the room first */ if ((i = get_char_vis(ch, name, FIND_CHAR_ROOM)) != NULL) return i; strcpy(tmp, name); if (!(number = get_number(&tmp))) { number = 1; tmp = name; } for (i = character_list; i && (j <= number); i = i->next) if (isname(tmp, i->player.name) && CAN_SEE(ch, i)) if (++j == number) return i; return NULL; }
struct char_data *get_char_room_vis(struct char_data *ch, char *name, int *number) { struct char_data *i; int num; if (!number) { number = # num = get_number(&name); } /* JE */ if (!str_cmp(name, "self") || !str_cmp(name, "me")) return (ch); /* 0.<name> means PC with name */ if (*number == 0) return (get_player_vis(ch, name, NULL, FIND_CHAR_ROOM)); for (i = world[IN_ROOM(ch)].people; i && *number; i = i->next_in_room) if (isname(name, i->player.name)) if (CAN_SEE(ch, i)) if (--(*number) == 0) return (i); return (NULL); }
struct char_data *get_char_room_vis(struct char_data * ch, char *name) { struct char_data *i; int j = 0, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp = tmpname; /* JE 7/18/94 :-) :-) */ if (!str_cmp(name, "self") || !str_cmp(name, "me")) return ch; strcpy(tmp, name); if (!(number = get_number(&tmp))) { number = 1; tmp = name; } for (i = world[ch->in_room].people; i && j <= number; i = i->next_in_room) { if (PRF_FLAGGED(i, PRF_NOTSELF) && !PRF_FLAGGED(ch, PRF_DETECT) && !IS_NPC(ch)) { if (isname(tmp, i->char_specials.name_dis)) if (CAN_SEE(ch, i)) if (++j == number) return i; } else if (!IS_APPROVED(i) && !IS_NPC(i)) { GET_NAME(i, chname); if ((isname(tmp, current_short_desc(i)) || isname(tmp, chname)) && CAN_SEE(ch, i)) if (++j == number) return (i); FREE_NAME(chname); } else { if (isname(tmp, i->player.name)) if (CAN_SEE(ch, i)) if (++j == number) return i; } } return NULL; }
char *find_ex_description(char *word, struct extra_descr_data *list) { struct extra_descr_data *i; for (i = list; i; i = i->next) if (isname(word,i->keyword)) return(i->description); return(0); }
static int same_token(int a, int b) { if (isname(a) && isname(b)) return 1; if (isname(a) && isdigit(b)) return 1; if (isdigit(a) && isdigit(b)) return 1; if (issymbol(a) && issymbol(b) && a != '(' && a != ')' && b != '(' && b != ')') return 1; if (a == '-' && isdigit(b)) return 1; return 0; }
int named_mobile_in_room(int room, struct hunting_data *c_data) { struct char_data *scan; for (scan = real_roomp(room)->people; scan; scan = scan->next_in_room) if (isname(c_data->name, scan->player.name)) { *(c_data->victim) = scan; return 1; } return 0; }
int find_door(struct char_data *ch, const char *type, char *dir, const char *cmdname) { int door; if (*dir) { /* a direction was specified */ if ((door = search_block(dir, dirs, FALSE)) == -1) { /* Partial Match */ send_to_char("That's not a direction.\r\n", ch); return (-1); } if (EXIT(ch, door)) { /* Braces added according to indent. -gg */ if (EXIT(ch, door)->keyword) { if (isname(type, EXIT(ch, door)->keyword)) return (door); else { sprintf(buf2, "I see no %s there.\r\n", type); send_to_char(buf2, ch); return (-1); } } else return (door); } else { sprintf(buf2, "I really don't see how you can %s anything there.\r\n", cmdname); send_to_char(buf2, ch); return (-1); } } else { /* try to locate the keyword */ if (!*type) { sprintf(buf2, "What is it you want to %s?\r\n", cmdname); send_to_char(buf2, ch); return (-1); } for (door = 0; door < NUM_OF_DIRS; door++) if (EXIT(ch, door)) if (EXIT(ch, door)->keyword) if (isname(type, EXIT(ch, door)->keyword)) return (door); sprintf(buf2, "There doesn't seem to be %s %s here.\r\n", AN(type), type); send_to_char(buf2, ch); return (-1); } }
struct char_data *get_char_vis(struct char_data *ch, char *name, int where) { struct char_data *i; int j = 0, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp = tmpname; /* check the room first */ if (where == FIND_CHAR_ROOM) return get_char_room_vis(ch, name); else if (where == FIND_CHAR_WORLD) { if ((i = get_char_room_vis(ch, name)) != NULL) return (i); strcpy(tmp, name); if (!(number = get_number(&tmp))) return get_player_vis(ch, tmp, 0); for (i = character_list; i && (j <= number); i = i->next) { if (PRF_FLAGGED(i, PRF_NOTSELF) && !PRF_FLAGGED(ch, PRF_DETECT) && !IS_NPC(ch)) { if (isname(tmp, i->char_specials.name_dis) && CAN_SEE(ch, i)) if (++j == number) return (i); } else if (!IS_APPROVED(i) && !IS_NPC(i)) { GET_NAME(i, chname); if ((isname(tmp, current_short_desc(i)) || isname(tmp, chname)) && CAN_SEE(ch, i)) if (++j == number) return (i); FREE_NAME(chname); } else { if (isname(tmp, i->player.name) && CAN_SEE(ch, i)) if (++j == number) return (i); } } } return (NULL); }
int Board_display_msg(int board_type, struct char_data *ch, char *arg, struct obj_data *board) { char number[MAX_INPUT_LENGTH], buffer[MAX_STRING_LENGTH]; int msg, ind; one_argument(arg, number); if (!*number) return (0); if (isname(number, board->name)) /* so "read board" works */ return (Board_show_board(board_type, ch, arg, board)); if (!is_number(number)) /* read 2.mail, look 2.sword */ return (0); if (!(msg = atoi(number))) return (0); if (GET_LEVEL(ch) < READ_LVL(board_type)) { send_to_char(ch, "You try but fail to understand the holy words.\r\n"); return (1); } if (!num_of_msgs[board_type]) { send_to_char(ch, "The board is empty!\r\n"); return (1); } if (msg < 1 || msg > num_of_msgs[board_type]) { send_to_char(ch, "That message exists only in your imagination.\r\n"); return (1); } #if NEWEST_AT_TOP ind = num_of_msgs[board_type] - msg; #else ind = msg - 1; #endif if (MSG_SLOTNUM(board_type, ind) < 0 || MSG_SLOTNUM(board_type, ind) >= INDEX_SIZE) { send_to_char(ch, "Sorry, the board is not working.\r\n"); log("SYSERR: Board is screwed up. (Room #%d)", GET_ROOM_VNUM(IN_ROOM(ch))); return (1); } if (!(MSG_HEADING(board_type, ind))) { send_to_char(ch, "That message appears to be screwed up.\r\n"); return (1); } if (!(msg_storage[MSG_SLOTNUM(board_type, ind)])) { send_to_char(ch, "That message seems to be empty.\r\n"); return (1); } snprintf(buffer, sizeof(buffer), "Message %d : %s\r\n\r\n%s\r\n", msg, MSG_HEADING(board_type, ind), msg_storage[MSG_SLOTNUM(board_type, ind)]); page_string(ch->desc, buffer, TRUE); return (1); }
struct obj_data *get_object_in_equip_vis(struct char_data *ch, char *arg, struct obj_data *equipment[], int *j) { for ((*j) = 0; (*j) < MAX_WEAR ; (*j)++) if (equipment[(*j)]) if (CAN_SEE_OBJ(ch,equipment[(*j)])) if (isname(arg, equipment[(*j)]->name)) return(equipment[(*j)]); return (0); }
/* Generic Find, designed to find any object orcharacter. * *arg is the pointer containing the string to be searched for. * This string doesn't have to be a single word, the routine * extracts the next word itself. * bitv.. All those bits that you want to "search through". * Bit found will be result of the function * *ch This is the person that is trying to "find" * **tar_ch Will be NULL if no character was found, otherwise points * **tar_obj Will be NULL if no object was found, otherwise points * * The routine used to return a pointer to the next word in *arg (just * like the one_argument routine), but now it returns an integer that * describes what it filled in. */ int generic_find(char *arg, bitvector_t bitvector, struct char_data *ch, struct char_data **tar_ch, struct obj_data **tar_obj) { int i, found, number; char name_val[MAX_INPUT_LENGTH]; char *name = name_val; *tar_ch = NULL; *tar_obj = NULL; one_argument(arg, name); if (!*name) return (0); if (!(number = get_number(&name))) return (0); if (IS_SET(bitvector, FIND_CHAR_ROOM)) { /* Find person in room */ if ((*tar_ch = get_char_room_vis(ch, name, &number)) != NULL) return (FIND_CHAR_ROOM); } if (IS_SET(bitvector, FIND_CHAR_WORLD)) { if ((*tar_ch = get_char_world_vis(ch, name, &number)) != NULL) return (FIND_CHAR_WORLD); } if (IS_SET(bitvector, FIND_OBJ_EQUIP)) { for (found = FALSE, i = 0; i < NUM_WEARS && !found; i++) if (GET_EQ(ch, i) && isname(name, GET_EQ(ch, i)->name) && --number == 0) { *tar_obj = GET_EQ(ch, i); found = TRUE; } if (found) return (FIND_OBJ_EQUIP); } if (IS_SET(bitvector, FIND_OBJ_INV)) { if ((*tar_obj = get_obj_in_list_vis(ch, name, &number, ch->carrying)) != NULL) return (FIND_OBJ_INV); } if (IS_SET(bitvector, FIND_OBJ_ROOM)) { if ((*tar_obj = get_obj_in_list_vis(ch, name, &number, world[IN_ROOM(ch)].contents)) != NULL) return (FIND_OBJ_ROOM); } if (IS_SET(bitvector, FIND_OBJ_WORLD)) { if ((*tar_obj = get_obj_vis(ch, name, &number))) return (FIND_OBJ_WORLD); } return (0); }
void metadata_notify_cb(FileData *fd, NotifyType type, gpointer data) { if ((type & (NOTIFY_REREAD | NOTIFY_CHANGE)) && g_list_find(metadata_write_queue, fd)) { DEBUG_1("Notify metadata: %s %04x", fd->path, type); if (!isname(fd->path)) { /* ignore deleted files */ metadata_write_queue_remove(fd); } } }
static void cb_file_util_move_multiple_ok (GenericDialog * gd, gpointer data) { FileDataMult *fdm = data; fdm->confirmed = TRUE; if (fdm->rename_auto) { gchar *buf; buf = unique_filename_simple (fdm->dest); if (buf) { g_free (fdm->dest); fdm->dest = buf; } else { /* * unique failed? well, return to the overwrite prompt :( */ fdm->confirmed = FALSE; } } else if (fdm->rename) { const gchar *name; name = gtk_entry_get_text (GTK_ENTRY (fdm->rename_entry)); if (strlen (name) == 0 || strcmp (name, filename_from_path (fdm->source)) == 0) { fdm->confirmed = FALSE; } else { g_free (fdm->dest); fdm->dest = concat_dir_and_file (fdm->dest_base, name); fdm->confirmed = !isname (fdm->dest); } } gtk_widget_hide (gd->dialog); file_util_move_multiple (fdm); }
int Board_display_msg(int board_type, struct char_data * ch, char *arg) { char number[MAX_STRING_LENGTH], buffer[MAX_STRING_LENGTH]; int msg, ind; one_argument(arg, number); if (!*number) return 0; if (isname(number, "board bulletin")) /* so "read board" works */ return (Board_show_board(board_type, ch, arg)); if (!isdigit(*number) || (!(msg = atoi(number)))) return 0; if (READ_LVL(board_type) != 0 && !COM_FLAGGED(ch, READ_LVL(board_type))) { send_to_char("You try but fail to understand the holy words.\r\n", ch); return 1; } if (!num_of_msgs[board_type]) { send_to_char("The board is empty!\r\n", ch); return (1); } if (msg < 1 || msg > num_of_msgs[board_type]) { send_to_char("That message exists only in your imagination.\r\n", ch); return (1); } ind = msg - 1; if (MSG_SLOTNUM(board_type, ind) < 0 || MSG_SLOTNUM(board_type, ind) >= INDEX_SIZE) { send_to_char("Sorry, the board is not working.\r\n", ch); stderr_log("SYSERR: Board is screwed up."); return 1; } if (!(MSG_HEADING(board_type, ind))) { send_to_char("That message appears to be screwed up.\r\n", ch); return 1; } if (!(msg_storage[MSG_SLOTNUM(board_type, ind)])) { send_to_char("That message seems to be empty.\r\n", ch); return 1; } sprintf(buffer, "Message %d : %s\r\n\r\n%s\r\n", msg, MSG_HEADING(board_type, ind), msg_storage[MSG_SLOTNUM(board_type, ind)]); page_string(ch->desc, buffer, 1); return 1; }
static void real_collection_button_pressed(FileDialog *fd, gpointer data, gint append) { CollectionData *cd = data; gboolean err = FALSE; gchar *text = NULL; if (!isname(fd->dest_path)) { err = TRUE; text = g_strdup_printf(_("No such file '%s'."), fd->dest_path); } if (!err && isdir(fd->dest_path)) { err = TRUE; text = g_strdup_printf(_("'%s' is a directory, not a collection file."), fd->dest_path); } if (!err && !access_file(fd->dest_path, R_OK)) { err = TRUE; text = g_strdup_printf(_("You do not have read permissions on the file '%s'."), fd->dest_path); } if (err) { if (text) { file_util_warning_dialog(_("Can not open collection file"), text, GTK_STOCK_DIALOG_ERROR, NULL); g_free(text); } return; } if (append) { collection_load(cd, fd->dest_path, TRUE); collection_unref(cd); } else { collection_window_new(fd->dest_path); } file_dialog_sync_history(fd, TRUE); file_dialog_close(fd); }
int main(int argc, char **argv) { if (argc == 1) { perr_all(); return 0; } int i = 1; for ( ; i < argc; ++i) { if (isno(argv[i])) { perr_by_no(atoi(argv[i])); } else if (isname(argv[i])) { perr_by_name(argv[i]); } else { fprintf(stderr, "unknown error\n"); continue; } } return 0; }