mklost+found.c revision 0f8973fb092a40fd0a11b7ec95c09128c9fb8f0c
1/* 2 * mklost+found.c - Creates a directory lost+found on a mounted second 3 * extended file system 4 * 5 * Copyright (C) 1992, 1993 Remy Card <card@masi.ibp.fr> 6 * 7 * This file can be redistributed under the terms of the GNU General 8 * Public License 9 */ 10 11/* 12 * History: 13 * 93/04/22 - Creation 14 */ 15 16#include <errno.h> 17#include <fcntl.h> 18#include <stdio.h> 19#include <string.h> 20#include <unistd.h> 21#include <stdlib.h> 22#include <sys/param.h> 23#include <sys/stat.h> 24 25#include "ext2fs/ext2_fs.h" 26#include "../version.h" 27#include "nls-enable.h" 28 29#define LPF "lost+found" 30 31int main (int argc, char ** argv) 32{ 33 char name [EXT2_NAME_LEN]; 34 char path [sizeof (LPF) + 1 + 256]; 35 struct stat st; 36 int i, j; 37 int d; 38 39#ifdef ENABLE_NLS 40 setlocale(LC_MESSAGES, ""); 41 bindtextdomain(NLS_CAT_NAME, LOCALEDIR); 42 textdomain(NLS_CAT_NAME); 43#endif 44 fprintf (stderr, "mklost+found %s (%s)\n", E2FSPROGS_VERSION, 45 E2FSPROGS_DATE); 46 if (argc != 1) { 47 fprintf (stderr, _("Usage: mklost+found\n")); 48 exit(1); 49 } 50 if (mkdir (LPF, 0755) == -1) { 51 perror ("mkdir"); 52 exit(1); 53 } 54 55 i = 0; 56 memset (name, 'x', 252); 57 do { 58 sprintf (name + 252, "%02d", i); 59 strcpy (path, LPF); 60 strcat (path, "/"); 61 strcat (path, name); 62 if ((d = creat (path, 0644)) == -1) { 63 perror ("creat"); 64 exit (1); 65 } 66 i++; 67 close (d); 68 if (stat (LPF, &st) == -1) { 69 perror ("stat"); 70 exit (1); 71 } 72 } while (st.st_size <= (EXT2_NDIR_BLOCKS - 1) * st.st_blksize); 73 for (j = 0; j < i; j++) { 74 sprintf (name + 252, "%02d", j); 75 strcpy (path, LPF); 76 strcat (path, "/"); 77 strcat (path, name); 78 if (unlink (path) == -1) { 79 perror ("unlink"); 80 exit (1); 81 } 82 } 83 exit (0); 84} 85