account.h
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:6k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.  * Copyright (C) 1998,1999  Ross Combs (rocombs@cs.nmsu.edu)
  3.  * Copyright (C) 2000,2001  Marco Ziech (mmz@gmx.net)
  4.  *
  5.  * This program is free software; you can redistribute it and/or
  6.  * modify it under the terms of the GNU General Public License
  7.  * as published by the Free Software Foundation; either version 2
  8.  * of the License, or (at your option) any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  */
  19. #ifndef INCLUDED_ACCOUNT_TYPES
  20. #define INCLUDED_ACCOUNT_TYPES
  21. #include "storage.h"
  22. #ifndef JUST_NEED_TYPES
  23. #define JUST_NEED_TYPES
  24. #include "common/list.h"
  25. #include "clan.h"
  26. #undef JUST_NEED_TYPES
  27. #else
  28. #include "common/list.h"
  29. #include "clan.h"
  30. #endif
  31. #ifdef ACCOUNT_INTERNAL_ACCESS
  32. typedef struct attribute_struct
  33. {
  34.     char const *              key;
  35.     char const *              val;
  36.     int       dirty;  // 1 = needs to be saved, 0 = unchanged
  37.     struct attribute_struct * next;
  38. } t_attribute;
  39. #endif
  40. #define ACCOUNT_CLIENTTAG_UNKN 0x00; // used for all non warcraft 3 clients so far
  41. #define ACCOUNT_CLIENTTAG_WAR3 0x01;
  42. #define ACCOUNT_CLIENTTAG_W3XP 0x02;
  43. typedef struct account_struct
  44. #ifdef ACCOUNT_INTERNAL_ACCESS
  45. {
  46.     t_attribute * attrs;
  47.     char * name;     /* profiling proved 99% of getstrattr its from get_name */
  48.     unsigned int  namehash; /* cached from attrs */
  49.     unsigned int  uid;      /* cached from attrs */
  50.     char        * tmpOP_channel; /* non-permanent channel user is tmpOP in */
  51.     char        * tmpVOICE_channel; /* channel user has been granted tmpVOICE in */
  52.     int           dirty;    /* 1==needs to be saved, 0==clean */
  53.     int           loaded;   /* 1==loaded, 0==only on disk */
  54.     int           accessed; /* 1==yes, 0==no */
  55.     int           friend_loaded;
  56.     unsigned int  age;      /* number of times it has not been accessed */
  57.     t_storage_info * storage;
  58.     t_clanmember * clanmember;
  59.     t_list * friends;
  60. }
  61. #endif
  62. t_account;
  63. #endif
  64. /*****/
  65. #ifndef JUST_NEED_TYPES
  66. #ifndef INCLUDED_ACCOUNT_PROTOS
  67. #define INCLUDED_ACCOUNT_PROTOS
  68. #define JUST_NEED_TYPES
  69. #include "common/hashtable.h"
  70. #undef JUST_NEED_TYPES
  71. extern unsigned int maxuserid;
  72. extern int accountlist_reload(void);
  73. extern t_account * account_load_new(char const * name);
  74. extern int account_check_name(char const * name);
  75. extern t_account * account_create(char const * username, char const * passhash1) ;
  76. extern t_account * create_vaccount(const char *username, unsigned int uid);
  77. extern void account_destroy(t_account * account);
  78. extern unsigned int account_get_uid(t_account const * account);
  79. extern int account_match(t_account * account, char const * username);
  80. extern int account_save(t_account * account, unsigned int delta);
  81. #ifdef DEBUG_ACCOUNT
  82. extern char const * account_get_strattr_real(t_account * account, char const * key, char const * fn, unsigned int ln);
  83. #define account_get_strattr(A,K) account_get_strattr_real(A,K,__FILE__,__LINE__)
  84. #else
  85. extern char const * account_get_strattr(t_account * account, char const * key);
  86. #endif
  87. extern int account_unget_strattr(char const * val);
  88. extern int account_set_strattr(t_account * account, char const * key, char const * val);
  89. extern char const * account_get_first_key(t_account * account);
  90. extern char const * account_get_next_key(t_account * account, char const * key);
  91. extern int accountlist_create(void);
  92. extern int accountlist_destroy(void);
  93. extern t_hashtable * accountlist(void);
  94. extern t_hashtable * accountlist_uid(void);
  95. extern int accountlist_load_default(void);
  96. extern void accountlist_unload_default(void);
  97. extern unsigned int accountlist_get_length(void);
  98. extern int accountlist_save(unsigned int delta, int *syncdeltap);
  99. extern t_account * accountlist_find_account(char const * username);
  100. extern t_account * accountlist_find_account_by_uid(unsigned int uid);
  101. extern t_account * accountlist_find_account_by_storage(t_storage_info *);
  102. extern int accountlist_allow_add(void);
  103. extern t_account * accountlist_add_account(t_account * account);
  104. // aaron
  105. //extern int accounts_rank_all(void);
  106. extern void accounts_get_attr(char const *);
  107. /* names and passwords */
  108. #ifdef DEBUG_ACCOUNT
  109. extern char const * account_get_name_real(t_account * account, char const * fn, unsigned int ln);
  110. # define account_get_name(A) account_get_name_real(A,__FILE__,__LINE__)
  111. #else
  112. extern char const * account_get_name(t_account * account);
  113. #endif
  114. extern int    account_set_tmpOP_channel(t_account * account, char const * tmpOP_channel);
  115. extern char * account_get_tmpOP_channel(t_account * account);
  116. extern int    account_set_tmpVOICE_channel(t_account * account, char const * tmpVOICE_channel);
  117. extern char * account_get_tmpVOICE_channel(t_account * account);
  118. // THEUNDYING MUTUAL FRIEND CHECK 7/27/02 UPDATED!
  119. // moved to account.c/account.h by Soar to direct access struct t_account
  120. extern int account_check_mutual( t_account * account,  int myuserid);
  121. extern t_list * account_get_friends(t_account * account);
  122. //clan thingy by DJP & Soar
  123. extern int account_set_clanmember(t_account * account, t_clanmember * clanmember);
  124. extern t_clanmember * account_get_clanmember(t_account * account);
  125. extern t_clan * account_get_clan(t_account * account);
  126. extern t_clan * account_get_creating_clan(t_account * account);
  127. #endif
  128. #endif
  129. #include "account_wrap.h"