Mercurial > hg > nnchat
comparison main.c @ 486:d48327519b17
Implement /who / /names functionality.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 26 May 2012 15:33:14 +0300 |
parents | 73a648387d10 |
children | ba48840b8525 |
comparison
equal
deleted
inserted
replaced
485:ad7ddce47878 | 486:d48327519b17 |
---|---|
824 // Alias /listallusers | 824 // Alias /listallusers |
825 return nn_conn_send_msg(conn, optUserNameEnc, "%2Flistallusers"); | 825 return nn_conn_send_msg(conn, optUserNameEnc, "%2Flistallusers"); |
826 } | 826 } |
827 | 827 |
828 | 828 |
829 int nncmd_names(nn_conn_t *conn, char *buf) | 829 #define NAME_NUM_PER_LINE 3 |
830 { | 830 #define NAME_ENTRY_SIZE 64 |
831 #define NAME_ENTRY_WIDTH 22 | |
832 | |
833 typedef struct | |
834 { | |
835 char buf[(NAME_NUM_PER_LINE * NAME_ENTRY_SIZE) + 16]; | |
836 size_t offs; | |
837 int i, total; | |
838 } nncmd_namedata_t; | |
839 | |
840 | |
841 static int nncmd_names_do(const nn_user_t *user, void *data) | |
842 { | |
843 nncmd_namedata_t *d = data; | |
844 char name[NAME_ENTRY_SIZE]; | |
845 size_t len; | |
846 | |
847 snprintf(name, sizeof(name), "[½3½%-20s½0½] ", user->name); | |
848 | |
849 d->total++; | |
850 if (d->i >= NAME_NUM_PER_LINE) | |
851 { | |
852 printMsgQ(currWin, "%s\n", d->buf); | |
853 d->i = 0; | |
854 d->offs = 0; | |
855 } | |
856 | |
857 len = strlen(name); | |
858 memcpy(d->buf + d->offs, name, len + 1); | |
859 d->offs += len; | |
860 d->i++; | |
861 | |
862 return 0; | |
863 } | |
864 | |
865 | |
866 int nncmd_names(nn_conn_t *conn, char *arg) | |
867 { | |
868 nncmd_namedata_t data; | |
831 (void) conn; | 869 (void) conn; |
832 (void) buf; | 870 (void) arg; |
833 | 871 |
834 printMsgQ(currWin, "Not implemented yet.\n"); | 872 printMsgQ(currWin, "Users:\n"); |
873 data.i = data.total = 0; | |
874 data.offs = 0; | |
875 | |
876 nn_userhash_foreach(nnUsers, nncmd_names_do, &data); | |
877 | |
878 if (data.i > 0) | |
879 { | |
880 printMsgQ(currWin, "%s\n", data.buf); | |
881 } | |
882 | |
883 printMsgQ(currWin, "%d users total.\n", data.total); | |
835 return 0; | 884 return 0; |
836 } | 885 } |
837 | 886 |
838 | 887 |
839 int nncmd_save_config(nn_conn_t *conn, char *buf) | 888 int nncmd_save_config(nn_conn_t *conn, char *buf) |