[Clipart] Namespace conflicts on the filenames.

Jonadab the Unsightly One jonadab at bright.net
Fri Jan 7 06:14:19 PST 2005


"Jonadab the Unsightly One" <jonadab at bright.net> writes:

>>> How can we track what filenames have been used, across releases?
>>> A special directory of zero-size files perhaps?  Some other way?
>>
> I think I like the idea of including some or all of the author's
> name.  That would at least prevent one person's submissions from
> trampling over another's.  But I think it would be better to have
> the title first...  hmm...
>
> What about title_author_yymmdd_nn.svg

That starts to get rather long, I fear.

Here is what I have now:

sub generate_filename {
  my ($m) = @_; # Must be an SVG::Metadata object, already filled out.
  my $maxlen = 27;
  # Older HFS filesystems (used by MacOS 8) can't handle more than 31
  # total, and we may be appending ".svg" or somesuch, so 31 - 4 = 27.

  my $t = lc $m->title();   $t =~ s/[^A-Za-z0-9.-]+/_/g;
  my $a = lc $m->author();  $a =~ s/[^A-Za-z0-9.-]+/_/g;

  while ($maxlen < length "${t}_${a}_00") {
    if (length $a) { $a =~ s/.$//; } # Abbreviate the author's name...
    else           { $t =~ s/.$//; } # and, if that's not enough, the title.
  }

  my $n = "01"; # This way we get title_author_01.svg, title_author_02.svg, &c.
  my $name = ($a ? "${t}_${a}_$n" : "${t}_$n");
  while (-e catfile($CONFIG{destination_directory}, "$name.svg") or
         -e catfile($CONFIG{destination_directory}, "$name.rdf") or
         -e catfile($CONFIG{destination_directory}, "$name.zip") or
         -e catfile($CONFIG{destination_directory}, "$name.tar.gz")) {
    ++$n; $name = ($a ? "${t}_${a}_$n" : "${t}_$n");
  }
  return $name;
}

As it stands, this ends up significantly truncating the author's name
in a number of cases.  For example, reasonable_title_jonadab_02.svg is
just exactly at the limit.

> Update:  a Google search reveals that MacOS 8 (or I think even MacOS
> 9 with a filesystem created originally under MacOS 8) has an even
> shorter limit, 31 characters.  That makes this issue even more
> pressing, since MacOS 8 is really not old enough that I want to tell
> its users to go away if we can avoid it.  As noted, I don't mind if
> StuffIt will truncate the names for them; can someone confirm it can
> do that?  Mark?  Andy?

Mark doesn't know, and I forgot that Andy is in Ecuador just now and
so not answering mail.  Anybody else know a Mac guru?  I'd like to
bump the limit up a bit from 31 characters and add in the date, but
only if it won't cause problems.

Oh, and I've also turned up another tidbit:  ISO9660 also has a
31-character limit, according to some sources.

-- 
$;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}}
split//,"ten.thgirb\@badanoj$/ --";$\=$ ;-> ();print$/




More information about the clipart mailing list