[vox-tech] Removing Files

Mark K. Kim vox-tech@lists.lugod.org
Fri, 21 May 2004 14:30:37 -0700 (PDT)


Have you tried mounting with the "-o iocharset=3D<charset>" option yet?

-Mark


On Fri, 21 May 2004, Daniel Hurt wrote:

> Ken Herron wrote:
> >
> >
> > --On Friday, May 21, 2004 11:48:16 +0000 Tim Riley
> > <timriley@timriley.net> wrote:
> >
> >>> <snip>
> >>> > r =3D 114
> >>> > =B4 =3D 4294967220
> >>
> >>
> >> This character is suspicious. It's supposed to be 39, so
> >> apparently there are colors or other attribute information
> >> embedded.
> >
> >
> > The actual character code is 180 decimal, which is an acute accent in
> > the latin1 (or ISO8859-1) character set. You're getting 4294967220
> > because of a bug in the program. ptr points to signed characters so 180
> > is interpreted as -76; when *ptr is passed to printf(), the value is
> > sign-extended to a signed int and then printed as if it were unsigned.
>
> When the bug was fixed, changing %u to %d, I recieve the same output of
> -76 for the character.
>
> >
> > But none of this really matters. When you get a filename from readdir()=
,
> > you should be able to call unlink() on that string and refer to the sam=
e
> > file. Funny high-bit characters in the string shouldn't be an issue at
> > this level. Certainly running "rm -r" on the directory containing the
> > file should have worked.
> >
> > Daniel, the test program you posted actually copies the filename string
> > into another buffer usint sprintf(). I don't think *printf() is suppose=
d
> > to do character-set conversions, but maybe it does. Try using strcat()
> > to construct the pathname for deletion, or else just chdir() into the
> > directory containing the file and call unlink() on the contents of the
> > d_name buffer.
> >
>
> I tried replacing the sprintf command with string commands in the
> original program and that did not work.  The involved calling the exact
> path the to the file with unlink and did not work.
>
> Here is the program output:
> # ./test_rev2.e
> .
> ..
> Evil Dead 3 - Army of Darkness (Director=B4s Cut).avi
> Found the File!
> Full Filename:
>     /usr/media/movies/Evil Dead 3 - Army of Darkness (Director=B4s Cut).a=
vi
> Could not delete file
> Error: No such file or directory
> test_rev2.e
>
> Next I tried to use your suggestion of chdir() and unlink the the file
> that way with having to build the filename to make sure that was not
> causing a problem.  This did not work as well:
>
> # ./delete_file.e
> .
> ..
> Evil Dead 3 - Army of Darkness (Director=B4s Cut).avi
> Found the File!
> Could not delete file
> Error: No such file or directory
>
> I then tried to delete the directory itself using several commands (
> unlink(), rmdir(), remove() ).  All these commands failed informing me
> that what I was trying to delete was a directory.  And I thanked them
> for that information which was already known ;-).  Here is the program
> output:
>
> # ./directory_remove.e
> .
> ..
> movies
> /usr/media/movies
>
> Try to unlink the directory
> Could not delete file
> Error: Is a directory
>
> Try to rmdir the directory
> Could not delete file
> Error: Is a directory
>
> Try to remove the directory
> Could not delete file
> Error: Is a directory
>
> The source code for the programs can be found here:
> http://www.mcising.net/files/remove_programs.tar.bz2
>
> *** These programs will delete files without prompting so be careful.
>
> > If this doesn't work, then it seems to me you have filesystem
> > corruption, despite the fact that fsck didn't find anything to fix. You
> > might have to resort to something drastic like:
> >
> > 1) Become root.
> > 2) Unlink the directory containing the file (see rm's "-d" or
> > "--directory" option).
> > 3) Unmount the filesystem and fsck it.
> >
>
> I must be doing something wrong, because I could not get "rm -d" to work
> even on a normal directory.  It kept informing me that it was a
> directory that I was trying to delete.  Here is the sequence of commands
> if you are curious:
>
> # umount /usr/media/
> # !fs
> fsck.jfs -v -f /dev/vg/media
> fsck.jfs version 1.1.3, 05-Sep-2003
> processing started: 5/21/2004 13.19.5
> The current device is:  /dev/vg/media
> Open(...READ/WRITE EXCLUSIVE...) returned rc =3D 0
> Primary superblock is valid.
> The type of file system for the device is JFS.
> Block size in bytes:  4096
> Filesystem size in blocks:  78643200
> **Phase 0 - Replay Journal Log
> LOGREDO:  Log already redone!
> logredo returned rc =3D 0
> **Phase 1 - Check Blocks, Files/Directories, and  Directory Entries
> **Phase 2 - Count links
> **Phase 3 - Duplicate Block Rescan and Directory Connectedness
> **Phase 4 - Report Problems
> **Phase 5 - Check Connectivity
> **Phase 6 - Perform Approved Corrections
> **Phase 7 - Rebuild File/Directory Allocation Maps
> **Phase 8 - Rebuild Disk Allocation Maps
> Filesystem Summary:
> Blocks in use for inodes:  1560
> Inode count:  12480
> File count:  8052
> Directory count:  406
> Block count:  78643200
> Free block count:  21469177
> 314572800 kilobytes total disk space.
>       5775 kilobytes in 406 directories.
> 228607070 kilobytes in 8052 user files.
>          0 kilobytes in extended attributes
>          0 kilobytes in access control lists
>      94797 kilobytes reserved for system use.
>   85876708 kilobytes are available for use.
> Filesystem is clean.
> All observed inconsistencies have been repaired.
> Filesystem has been marked clean.
> **** Filesystem was modified. ****
> processing terminated:  5/21/2004 13:19:24  with return code: 0  exit
> code: 0.
> # mount /usr/media/
> # cd /usr/media/
> # rm -d /usr/media/movies/
> rm: cannot remove `/usr/media/movies/': Is a directory
> # rm -df /usr/media/movies/
> rm: cannot remove `/usr/media/movies/': Is a directory
> # rm --directory --force --interactive --verbose /usr/media/movies
> rm: cannot remove directory `/usr/media/movies': Is a directory
>
>
> Sorry for all the trouble, but I am thinking just to move all the files
> off this partition and then reformat the partition to be done with it
> and then not copy those files to this partition again :-)
>
> Thanks,
>
> Dan
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
>

--=20
Mark K. Kim
AIM: markus kimius
Homepage: http://www.cbreak.org/
Xanga: http://www.xanga.com/vindaci
Friendster: http://www.friendster.com/user.jsp?id=3D13046
PGP key fingerprint: 7324 BACA 53AD E504 A76E  5167 6822 94F0 F298 5DCE
PGP key available on the homepage