On 21/11/2007, at 12:08 PM, Jeff Ross wrote:

Jeff Ross wrote:
Hi,

       "
 11609 restore  RET   write 27/0x1b
 11609 restore  CALL  write(0x2,0x80147000,0x34)
 11609 restore  GIO   fd 2 wrote 52 bytes
       "1834488 Document Scrap '\M-o\M^C\M^X Journal Entrie...'.shs
       "
On a console (not xterm) the file name appears to be
    Document Scrap 'C/ Journal Entrie...'.shs
(that's a lower case "i" with two dots over it.)

My original e-mail did get mangled a little.

The C/ above is really the lowercase i with two dots over it.

Jeff

I had a look out of curiosity (again) ... no great words of wisdom but might help ...

Doesn't *just* seem to be because of the i-with-two-dots above it (0xEF? I looked at http://unicode.org/charts/ and the Latin-1 page - you'll need a PDF viewer. The character is a LATIN SMALL LETTER I WITH DIAERESIS to give it the proper moniker ...)

Create char_file.c (yes, no prizes for this code.) You can achieve getting this filename without code, but might be easier to use the code than find the right character and paste it.

#include <stdio.h>

int main(void) {
        FILE *f;
        char fn[]="xxxxx.txt";
        fn[2]=0xEF;
        f=fopen(fn,"w");
        fputs("Something here",f);
        fclose(f);
        return 0;
}

Compile with ...
# cc -Wall -o char_file char_file.c

Execute with ...
# ./char_file

You should end up with a new file in your current directory:

xx?xx.txt (depending on your display, that question mark may appear as the i-with-two-dots.)

Do a dump:

# mkdir testd
# mv xx?xx.txt testd
# dump -0 -f testd.dmp testd/
  DUMP: Dumping sub files/directories from /home
  DUMP: Dumping file/directory testd/
  DUMP: Date of this level 0 dump: Thu Nov 22 10:59:25 2007
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/rwd0h (/home) to testd.dmp
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 106 tape blocks on 0.00 tape(s).
  DUMP: Volume 1 started at: Thu Nov 22 10:59:25 2007
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: 74 tape blocks on 1 volume
  DUMP: Date of this level 0 dump: Thu Nov 22 10:59:25 2007
  DUMP: Volume 1 completed at: Thu Nov 22 10:59:25 2007
  DUMP: Date this dump completed:  Thu Nov 22 10:59:25 2007
  DUMP: Average transfer rate: 0 KB/s
  DUMP: Closing testd.dmp
  DUMP: DUMP IS DONE

Do a restore:

# restore -i -f testd.dmp
restore > cd testd
restore > verbose
verbose mode on
restore > ls
./testd:
25 ./          2 ../        24 xx?xx.txt

restore > quit

The copy/paste was via a Mac console - on X running on OpenBSD 4.2/ i386 the i-with-two-dots appears correctly throughout.

I *know* your dump/restore process is a LOT more complicated than this - I'm trying to reproduce the error with the smallest amount of effort (don't fancy setting up a Windows box and compressing 12Gb, etc.!)

Guess the next thing might be getting a way smaller sample dump file that still shows the problem? Doesn't *seem* to be just the i character - so is it the spaces? The apostrophes? Combination of all three? The length of the filename? The Windows factor? Samba? Translation by something?

The (interactive) restore source code is in /usr/src/sbin/restore/ interactive.c - so you could try adding some debug messages in there on a test box and run the file through it ...

Are you running 4.2 i386 (apologies if covered or obvious in your posting?)

Thanks.

Reply via email to