int ls_cmd(int argc, char **argv) { boolean showHidden = false; int i = 2; if (argc == 1 && strcmp(argv[0], "-a") == 0) { showHidden = true; i = 0; } fs_node_t current, *node; char perm[MASK_STRING_LEN]; fs_getFsNode(¤t, tty_getCurrentTTY()->currDirectory); while ((node = readdir_fs(¤t, i)) != NULL) { // get directory i tty_setFormatToCurrTTY(video_getFormattedColor(LIGHT_BLUE, BLACK)); if (node->name[0] != '.' || (node->name[0] == '.' && showHidden)) { if (showHidden) { if (i == 0) strcpy(node->name, "."); else if (i == 1) strcpy(node->name, ".."); } mask_string(node->mask, perm); printf("%s\t%5s\t%5s", perm, user_getName(node->uid), group_getName(node->gid)); _ls_cmd_setColor(FILE_TYPE(node->mask)); printf("\t%s%s\n", node->name, _ls_cmd_EndingString(FILE_TYPE(node->mask)) ); } i++; } return 0; }
/* s = service the command was sent to u = user the command was sent from */ void cs_info(IRC_User *s, IRC_User *u) { ChanRecord* cr; char buf[64]; struct tm *tm; char *target = strtok(NULL, " "); IRC_Chan *chan; u_int32_t source_snid = u->snid; if(NeedsAuth && !IsAuthenticated(u)) send_lang(u, s, NEEDS_AUTH_NICK); else if(IsNull(target)) send_lang(u, s, CHAN_INFO_SYNTAX); else if((cr = OpenCR(target)) == NULL) send_lang(u, s, CHAN_X_NOT_REGISTERED, target); else /* everything is valid */ { int sadmin = (is_soper(source_snid) != 0); send_lang(u, s, CHAN_INFO_HEADER); if(sadmin) send_lang(u, s, CHAN_SCID, cr->scid); send_lang(u, s, CHAN_NAME, target); if(IsPrivateChan(cr) && !sadmin && ((source_snid == 0) || (source_snid && source_snid != cr->founder))) send_lang(u, s, CHAN_INFO_PRIVATE, target); else { if(cr->cdesc) send_lang(u, s, CHAN_DESC, cr->cdesc); if(sql_singlequery("SELECT nick FROM nickserv WHERE snid=%d", cr->founder)) send_lang(u, s, CHAN_FOUNDER_X, sql_field(0)); if(sql_singlequery("SELECT nick FROM nickserv WHERE snid=%d", cr->successor)) send_lang(u, s, CHAN_SUCCESSOR_X, sql_field(0)); tm = localtime(&cr->t_reg); strftime(buf, sizeof(buf), format_str(u, INFO_DATE_FORMAT), tm); send_lang(u, s, CHAN_REGDATE_X_X, buf, ago_time(cr->t_reg, u )); tm = localtime(&cr->t_last_use); strftime(buf, sizeof(buf), format_str(u, INFO_DATE_FORMAT), tm); send_lang(u, s, CHAN_LAST_USE_X_X, buf, ago_time(cr->t_last_use, u )); if(!IsNull(cr->email)) send_lang(u, s, CHAN_EMAIL, cr->email); if(!IsNull(cr->url)) send_lang(u, s, CHAN_URL, cr->url); if(!IsNull(cr->entrymsg)) send_lang(u, s, CHAN_ENTRYMSG, cr->entrymsg); if(!IsNull(cr->last_topic)) send_lang(u, s, CHAN_TOPIC_X, cr->last_topic); if(!IsNull(cr->last_topic_setter)) send_lang(u, s, CHAN_TOPIC_SETTER_X, cr->last_topic_setter); chan = irc_FindChan(target); if(chan && chan->users_count) send_lang(u, s, CHAN_CURRUSERS_X, chan ? chan->users_count : 0); tm = localtime(&cr->t_maxusers); strftime(buf, sizeof(buf), format_str(u, INFO_DATE_FORMAT), tm); send_lang(u, s, CHAN_USERS_REC_X_X_X, cr->maxusers, buf, ago_time(cr->t_maxusers, u)); if((sadmin || (source_snid == cr->founder)) && cr->mlock && cr->mlock[0]) send_lang(u, s, CHAN_MLOCK_X, cr->mlock); if(cr->flags && (sadmin || (source_snid == cr->founder))) send_lang(u, s, CHAN_OPTIONS_X, mask_string(options_mask, cr->flags)); if(cr->flags & NFL_SUSPENDED) { MYSQL_RES *res; MYSQL_ROW row; res = sql_query("SELECT t_when, duration, reason " "FROM chanserv_suspensions WHERE scid=%d", cr->scid); if(res && (row = sql_next_row(res))) { time_t t_when = atoi(row[0]); int remaining = -1; if(atoi(row[1]) != 0) { remaining = atoi(row[1]) - (irc_CurrentTime - t_when); remaining /= 24*3600; remaining++; if(remaining < 0) remaining = 0; } tm = localtime(&t_when); strftime(buf, sizeof(buf), format_str(u, DATE_FORMAT), tm); if(remaining == -1) send_lang(u,s, CS_INFO_SUSPENDED_X_FOREVER, buf); else send_lang(u,s, CS_INFO_SUSPENDED_X_X, buf, remaining); send_lang(u,s, CS_INFO_SUSPENDED_REASON, row[2]); } sql_free(res); } send_lang(u, s, CHAN_INFO_TAIL); } CloseCR(cr); } }