for (i = 0; i < (int)node->nChildren(); i++) {
SGPropertyNode * child = node->getChild(i);
name = child->getName();
+ if ( node->getChild(name, 1) != 0 ) {
+ iindex = child->getIndex();
+ sprintf(sindex, "[%d]", iindex);
+ name += sindex;
+ }
line = name;
names[ pi ] = new char[ strlen(line.c_str())+2 ] ;
strcpy ( names [ pi ], line.c_str() ) ;
if ( child->nChildren() > 0 ) {
- iindex = child->getIndex();
- sprintf(sindex, "%d", iindex);
dflag[ pi ] = 1 ;
files[ pi ] = new char[ strlen(line.c_str())+strlen(sindex)+4 ] ;
strcpy ( files [ pi ], line.c_str() ) ;
- strcat ( files [ pi ], "[" ) ;
- strcat ( files [ pi ], sindex ) ;
- strcat ( files [ pi ], "]/" ) ;
+ strcat ( files [ pi ], "/" ) ;
values[ pi ] = new char[ 2 ] ;
} else {
dflag[ pi ] = 0 ;
files [ num_files ] = NULL ;
+ // Sort the entries. This is a simple N^2 extraction sort. More
+ // elaborate algorithms aren't necessary for the few dozen
+ // properties we're going to sort.
+ for(i=0; i<num_files; i++) {
+ int j, min = i;
+ char df, *tmp;
+ for(j=i+1; j<num_files; j++)
+ if(strcmp(names[j], names[min]) < 0)
+ min = j;
+ if(i != min) {
+ tmp = names[min]; names[min] = names[i]; names[i] = tmp;
+ tmp = files[min]; files[min] = files[i]; files[i] = tmp;
+ tmp = values[min]; values[min] = values[i]; values[i] = tmp;
+ df = dflag[min]; dflag[min] = dflag[i]; dflag[i] = df;
+ }
+ }
+
// printf("files pointer=%i/%i\n", files, num_files);
proppath -> setLabel (startDir);