[moved to grass5]
Your ideas about where to put and how to scan for icons sound good.
Would it be a good idea to scan 1) current mapset, 2) PERMANENT in the
current location, and 3) $GISBASE/etc/symbol?
It's not my idea, it's what the library is already set up to do.
d.vect is currently breaking that functionality.
I think "g.list icon" should be updated too. (or changed to g.list
symbol)
I can't comment on the C-code for d.vect, but the ideas seems fine.
Just having icon_files() scan the current mapset (and maybe
PERMANENT?) seems the simplest instead of adding a flag.
Code is just details, creating & sticking to a sound design is the hard part.
IMO it should be handled by library fns in the same manner as any other
gis element. The extra directory complicates a simple add.
At least a G_list_icons() or something that returns a tokenized char array
listing all available icon files, adapted from d.vect's icon_files().
An additional possibility (along with scanning mapset) would be to
have an environmental variable (SYMBOL_LOCATION) for the system-wide
symbol set that would be default set to $GISBASE/etc/symbol, but could
be set to another custom location in .grassrc6 or with g.gisenv. Of
course, I have no idea how easy/difficult this all would be.
I'd prefer to keep these to a minimum unless there's a really good
reason. They are non-intuitive and are useless without good
centralized documentation. Having said that, I do see the logic in
keeping only one set of symbols around instead of copying them to every
location you work with.
Hamish