/*---- run comment ----*/ /* Also Status items values (including run comment) */ /* want Run Comment to be shown first but, instead of */ /* storing everything and then displaying in our chosen order */ /* find comment first, and then show other items as they are seen */ db_find_key(hDB,0,"/Experiment/Status Items", &hkey); if( hkey ){ /* If this Directory exists ... */ char status_data[1000]; /* same size as str defined above */ db_find_key(hDB,0,"/Experiment/Status Items/comment", &hsubkey); if( hsubkey ){ /* Show Run comment before other items ...*/ db_get_key(hDB, hsubkey, &key); size = sizeof(status_data); if( (status = db_get_data(hDB, hsubkey, status_data, &size, key.type)) == DB_SUCCESS && key.num_values == 1 && key.type != TID_KEY ){ db_sprintf(str, status_data, key.item_size, 0, key.type); rsprintf("%s\n", str); } } /* each key can also be a link: we want link data and original key name */ /* => get key twice: follwing links(for data) not follow (for org name) */ int item_count=0; /* Total number of things shown */ for(i=0; ; i++){ /* Loop over status-item subkeys */ db_enum_key(hDB, hkey, i, &hsubkey);/*get ith key data, follow links */ if( ! hsubkey ){ break; } /* (end of subkeys) */ db_get_key(hDB, hsubkey, &key); /* ... */ /* key data has unknown type, copy to status_data then conv -> string*/ size = sizeof(status_data); /* Don't try to display arrays/subdirs */ if( (status=db_get_data(hDB,hsubkey, status_data, &size, key.type)) != DB_SUCCESS || key.num_values>1 || key.type == TID_KEY ){ continue; } db_sprintf(str, status_data, key.item_size, 0, key.type); /*->string */ db_enum_link(hDB, hkey, i, &hsubkey); /* Get ith subkey link name */ db_get_key(hDB, hsubkey, &key); /* ... */ if( strstr(key.name,"comment") ){ continue; } /* skip comment (done) */ if( ! (item_count % 3) ){ rsprintf(""); } rsprintf("%s: %s", 0xD0D0FF, key.name, str ); if( ! (++item_count % 3) ){ rsprintf("\n"); } } while( (item_count % 3) ){ /* complete any partial row of 3 ... */ rsprintf("", 0xD0D0FF ); if( (++item_count % 3) == 0 ){ rsprintf("\n"); } } } /* end of if existence of "status items" hkey */ // Original Run Comment Section ... // size = sizeof(str); // if (db_get_value(hDB, 0, "/Experiment/Run parameters/Comment", str, // &size, TID_STRING, FALSE) == DB_SUCCESS) // rsprintf("%s\n", str); /*---- Equipment list ----*/