rehome.c
上传用户:minyiyu
上传日期:2018-12-24
资源大小:864k
文件大小:3k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. /*
  2.  * rehome.c -- translate old user home directory hierarchy.
  3.  *
  4.  * A part of Firebird BBS 3.0 utility kit
  5.  *
  6.  * Copyright (c) 1999, Edward Ping-Da Chuang <edwardc@firebird.dhs.org>
  7.  * All rights reserved.
  8.  *
  9.  * Redistribution and use in source and binary forms, with or without
  10.  * modification, are permitted provided that the following conditions
  11.  * are met:
  12.  * 1. Redistributions of source code must retain the above copyright
  13.  *    notice, this list of conditions and the following disclaimer.
  14.  * 2. Redistributions in binary form must reproduce the above copyright
  15.  *    notice, this list of conditions and the following disclaimer in the
  16.  *    documentation and/or other materials provided with the distribution.
  17.  *
  18.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  19.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  20.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  21.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  22.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  23.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  24.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  25.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  26.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  27.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  28.  * SUCH DAMAGE.
  29.  *
  30.  * CVS: $Id: rehome.c,v 1.1 2000/01/15 01:45:43 edwardc Exp $
  31.  */
  32. /* in now. we use .PASSWDS.new */
  33. #include "bbs.h"
  34. #define  PASSWDS ".PASSWDS.new"
  35. int
  36. main()
  37. {
  38. FILE           *rec;
  39. int             i;
  40. char            buf[256];
  41. char            buf2[256];
  42. struct userec   user;
  43. rec = fopen(PASSWDS, "rb");
  44. printf("1. Create Index directoryn");
  45. for (i = 'A'; i <= 'Z'; i++) {
  46. sprintf(buf, "%s/home/%c", BBSHOME, i);
  47. mkdir(buf, 0760);
  48. chown(buf, BBSUID, BBSGID);
  49. sprintf(buf, "%s/mail/%c", BBSHOME, i);
  50. mkdir(buf, 0760);
  51. chown(buf, BBSUID, BBSGID);
  52. }
  53. i = 0;
  54. printf("2. Moving User Directoryn");
  55. while (1) {
  56. if (fread(&user, sizeof(user), 1, rec) <= 0)
  57. break;
  58. i++;
  59. if ( user.numlogins <= 0 )
  60. continue;
  61. sprintf(buf, "%s/home/%s", BBSHOME, user.userid);
  62. sprintf(buf2, "%s/home/%c/%s", BBSHOME, toupper(user.userid[0]), user.userid);
  63. rename(buf, buf2);
  64. sprintf(buf, "%s/mail/%s", BBSHOME, user.userid);
  65. sprintf(buf2, "%s/mail/%c/%s", BBSHOME, toupper(user.userid[0]), user.userid);
  66. rename(buf, buf2);
  67. }
  68. printf("3. Done. total %d user home transfeeredn", i);
  69. fclose(rec);
  70. }