summaryrefslogtreecommitdiffstats
path: root/util/r2014convert.c
diff options
context:
space:
mode:
authorscw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-05-24 08:31:48 +0800
committerscw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-05-24 08:31:48 +0800
commit0d1688520003011abbcb9c37074f2c2dce88f72a (patch)
tree2c02e8a6fdcef4191ef2ae45c10fb6ce63bf2172 /util/r2014convert.c
parent919bd1cabc73f19279bd94f8bbae1b26bee84e87 (diff)
downloadpttbbs-0d1688520003011abbcb9c37074f2c2dce88f72a.tar
pttbbs-0d1688520003011abbcb9c37074f2c2dce88f72a.tar.gz
pttbbs-0d1688520003011abbcb9c37074f2c2dce88f72a.tar.bz2
pttbbs-0d1688520003011abbcb9c37074f2c2dce88f72a.tar.lz
pttbbs-0d1688520003011abbcb9c37074f2c2dce88f72a.tar.xz
pttbbs-0d1688520003011abbcb9c37074f2c2dce88f72a.tar.zst
pttbbs-0d1688520003011abbcb9c37074f2c2dce88f72a.zip
Merge from scw.angel.
*NOTE* Before running this revision, please read PttCurrent board at telnet://ptt.cc or http://scwg.wiki.ptt.cc/-Angel git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2014 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'util/r2014convert.c')
-rw-r--r--util/r2014convert.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/util/r2014convert.c b/util/r2014convert.c
new file mode 100644
index 00000000..7609cee4
--- /dev/null
+++ b/util/r2014convert.c
@@ -0,0 +1,63 @@
+#include "bbs.h"
+
+int main(){
+ int orig_fd, new_fd;
+ userec_t u;
+ int count = 0;
+
+ orig_fd = open(BBSHOME "/.AngelTrans", O_WRONLY | O_CREAT | O_EXCL, 0600);
+ if (orig_fd == -1) {
+ if (errno == EEXIST) {
+ char c;
+ printf("It seems your .PASSWD file has been transfered, "
+ "do it any way?[y/N] ");
+ fflush(stdout);
+ scanf(" %c", &c);
+ if (c != 'y' && c != 'Y')
+ return 0;
+ } else {
+ perror("opening " BBSHOME "/.AngelTrans for marking");
+ return 0;
+ }
+ } else {
+ time_t t = time(NULL);
+ char* str = ctime(&t);
+ write(orig_fd, str, strlen(str));
+ }
+
+ orig_fd = open(BBSHOME "/.PASSWDS", O_RDONLY);
+ if( orig_fd < 0 ){
+ perror("opening " BBSHOME "/.PASSWDS for reading");
+ return 1;
+ }
+ printf("Reading from " BBSHOME "/.PASSWDS\n");
+
+ new_fd = open(BBSHOME "/PASSWDS.NEW", O_WRONLY | O_CREAT | O_TRUNC, 0600);
+ if( new_fd < 0 ){
+ perror("opening " BBSHOME "/PASSWDS.NEW for writing");
+ return 1;
+ }
+ printf("Writing to " BBSHOME "/PASSWDS.NEW\n");
+
+ while(read(orig_fd, &u, sizeof(userec_t)) == sizeof(userec_t)){
+ // clear 0x400, 0x800, and 0x3000
+ u.uflag2 &= ~(REJ_OUTTAMAIL | REJ_QUESTION | ANGEL_MASK);
+ if( u.userlevel & OLD_PERM_NOOUTMAIL )
+ u.uflag2 |= REJ_OUTTAMAIL;
+ u.userlevel &= ~PERM_ANGEL;
+ bzero(u.myangel, IDLEN + 1);
+ write(new_fd, &u, sizeof(userec_t));
+ ++count;
+ }
+
+ close(orig_fd);
+ close(new_fd);
+ printf("Done, totally %d accounts translated\n", count);
+
+ printf("Moving files....\n");
+ system("mv -i " BBSHOME "/.PASSWDS " BBSHOME "/.PASSWDS.old");
+ system("mv -i " BBSHOME "/PASSWDS.NEW " BBSHOME "/.PASSWDS");
+ printf("Done, old password file is now at " BBSHOME "/.PASSWDS.old\n");
+
+ return 0;
+}