mklost+found.c revision e0ed7404719a9ddd2ba427a80db5365c8bad18c0
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 setlocale(LC_CTYPE, ""); 42 bindtextdomain(NLS_CAT_NAME, LOCALEDIR); 43 textdomain(NLS_CAT_NAME); 44#endif 45 fprintf (stderr, "mklost+found %s (%s)\n", E2FSPROGS_VERSION, 46 E2FSPROGS_DATE); 47 if (argc != 1) { 48 (void)argv; /* avoid unused argument warning */ 49 fprintf (stderr, "%s", _("Usage: mklost+found\n")); 50 exit(1); 51 } 52 if (mkdir (LPF, 0700) == -1) { 53 perror ("mkdir"); 54 exit(1); 55 } 56 57 i = 0; 58 memset (name, 'x', 246); 59 do { 60 sprintf (name + 246, "%08d", i); 61 strcpy (path, LPF); 62 strcat (path, "/"); 63 strcat (path, name); 64 if ((d = creat (path, 0644)) == -1) { 65 perror ("creat"); 66 exit (1); 67 } 68 i++; 69 close (d); 70 if (stat (LPF, &st) == -1) { 71 perror ("stat"); 72 exit (1); 73 } 74 } while (st.st_size <= (EXT2_NDIR_BLOCKS - 1) * st.st_blksize); 75 for (j = 0; j < i; j++) { 76 sprintf (name + 246, "%08d", j); 77 strcpy (path, LPF); 78 strcat (path, "/"); 79 strcat (path, name); 80 if (unlink (path) == -1) { 81 perror ("unlink"); 82 exit (1); 83 } 84 } 85 exit (0); 86} 87