Commit 6616c3b0 authored by Claes Sjofors's avatar Claes Sjofors

wb revisions, Git set as default, and 'Enable revisions' added in settings

parent b9d0d49d
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
# define pwr_cNameDistribute "$pwrp_root/src/db/pwrp_cnf_distribute.dat" # define pwr_cNameDistribute "$pwrp_root/src/db/pwrp_cnf_distribute.dat"
# define pwr_cNameSysObject "$pwrp_root/src/db/pwrp_cnf_sysobject.dat" # define pwr_cNameSysObject "$pwrp_root/src/db/pwrp_cnf_sysobject.dat"
# define pwr_cNameFilePath "$pwrp_root/src/db/pwrp_cnf_dirlist.dat" # define pwr_cNameFilePath "$pwrp_root/src/db/pwrp_cnf_dirlist.dat"
# define pwr_cNameRevision "$pwrp_root/src/db/pwrp_cnf_revision.dat"
# define pwr_cNameLocalWb "$pwrp_root/src/db/wb.wb_load" # define pwr_cNameLocalWb "$pwrp_root/src/db/wb.wb_load"
# define pwr_cNameGblVolumeList "$pwra_db/pwr_volumelist.dat" # define pwr_cNameGblVolumeList "$pwra_db/pwr_volumelist.dat"
# define pwr_cNameCmnVolumeList "pwr_volumelist.dat" # define pwr_cNameCmnVolumeList "pwr_volumelist.dat"
...@@ -71,4 +72,4 @@ ...@@ -71,4 +72,4 @@
# define pwr_cNameRedcom "%sld_redcom_%s_%04d.dat" # define pwr_cNameRedcom "%sld_redcom_%s_%04d.dat"
#endif #endif
#endif #endif
\ No newline at end of file
...@@ -48,3 +48,5 @@ noselect <No revision is selected> /error ...@@ -48,3 +48,5 @@ noselect <No revision is selected> /error
createpos <Unable to create a new revision from current> /error createpos <Unable to create a new revision from current> /error
nosuchrev <No such revision> /error nosuchrev <No such revision> /error
nobranch <No branch is checked out> /info nobranch <No branch is checked out> /info
nochange <No change since last revision> /error
nogit <Git not found> /error
\ No newline at end of file
...@@ -54,7 +54,6 @@ pwrc_dblist_read() ...@@ -54,7 +54,6 @@ pwrc_dblist_read()
pwrc_status=$pwrc__success pwrc_status=$pwrc__success
#set -o xtrace #set -o xtrace
echo "arg1: \"$1\" arg2: \"$2\" arg3: \"$3\""
if [ -n "${db_array[*]}" ]; then if [ -n "${db_array[*]}" ]; then
unset db_array unset db_array
......
...@@ -1905,6 +1905,7 @@ void WttGtk::boot_ok_cb(GtkWidget *w, gpointer data) ...@@ -1905,6 +1905,7 @@ void WttGtk::boot_ok_cb(GtkWidget *w, gpointer data)
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeModel *store; GtkTreeModel *store;
char *text; char *text;
int node_type;
if ( !wtt->focused_wnav) if ( !wtt->focused_wnav)
wtt->set_focus_default(); wtt->set_focus_default();
...@@ -1929,9 +1930,10 @@ void WttGtk::boot_ok_cb(GtkWidget *w, gpointer data) ...@@ -1929,9 +1930,10 @@ void WttGtk::boot_ok_cb(GtkWidget *w, gpointer data)
strcpy( nodeconfigname, volumelist_ptr->p1); strcpy( nodeconfigname, volumelist_ptr->p1);
if ( strcmp( nodeconfigname, text) == 0) { if ( strcmp( nodeconfigname, text) == 0) {
node_type = atoi( volumelist_ptr->p6);
wb_build build( *(wb_session *)wtt->ldhses, wtt->focused_wnav); wb_build build( *(wb_session *)wtt->ldhses, wtt->focused_wnav);
build.opt = wtt->focused_wnav->gbl.build; build.opt = wtt->focused_wnav->gbl.build;
build.node( nodeconfigname, build.node( nodeconfigname, node_type,
wtt->boot_volumelist, wtt->boot_volumecount); wtt->boot_volumelist, wtt->boot_volumecount);
if ( build.evenSts()) { if ( build.evenSts()) {
gtk_widget_destroy( ((WttGtk *)wtt)->boot_dia); gtk_widget_destroy( ((WttGtk *)wtt)->boot_dia);
...@@ -1970,6 +1972,7 @@ void WttGtk::update_options_form() ...@@ -1970,6 +1972,7 @@ void WttGtk::update_options_form()
{ {
// Hierarchies // Hierarchies
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(enable_comment_w), enable_comment ? TRUE : FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(enable_comment_w), enable_comment ? TRUE : FALSE);
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(enable_revisions_w), enable_revisions ? TRUE : FALSE);
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(show_plant_w), wnav_mapped ? TRUE : FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(show_plant_w), wnav_mapped ? TRUE : FALSE);
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(show_node_w), wnavnode_mapped ? TRUE : FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(show_node_w), wnavnode_mapped ? TRUE : FALSE);
...@@ -2000,6 +2003,7 @@ void WttGtk::update_options_form() ...@@ -2000,6 +2003,7 @@ void WttGtk::update_options_form()
void WttGtk::set_options() void WttGtk::set_options()
{ {
enable_comment = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(enable_comment_w)); enable_comment = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(enable_comment_w));
enable_revisions = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(enable_revisions_w));
show_class = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(show_class_w)); show_class = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(show_class_w));
show_alias = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(show_alias_w)); show_alias = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(show_alias_w));
show_descrip = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(show_descrip_w)); show_descrip = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(show_descrip_w));
...@@ -2013,14 +2017,13 @@ void WttGtk::set_options() ...@@ -2013,14 +2017,13 @@ void WttGtk::set_options()
build_crossref_sim = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_crossrefsim_w)); build_crossref_sim = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_crossrefsim_w));
build_crossref_graph = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_crossrefgraph_w)); build_crossref_graph = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_crossrefgraph_w));
build_manual = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_manual_w)); build_manual = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_manual_w));
build_nocopy = (int) gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(build_nocopy_w));
wnav->set_options( enable_comment, show_class, show_alias, wnav->set_options( enable_comment, enable_revisions, show_class, show_alias,
show_descrip, show_objref, show_objxref, show_descrip, show_objref, show_objxref,
show_attrref, show_attrxref, build_force, build_debug, show_attrref, show_attrxref, build_force, build_debug,
build_crossref, build_crossref_sim, build_crossref_graph, build_crossref, build_crossref_sim, build_crossref_graph,
build_manual, build_nocopy); build_manual, build_nocopy);
wnavnode->set_options( enable_comment, show_class, show_alias, wnavnode->set_options( enable_comment, enable_revisions, show_class, show_alias,
show_descrip, show_objref, show_objxref, show_descrip, show_objref, show_objxref,
show_attrref, show_attrxref, build_force, build_debug, show_attrref, show_attrxref, build_force, build_debug,
build_crossref, build_crossref_sim, build_crossref_graph, build_crossref, build_crossref_sim, build_crossref_graph,
...@@ -2115,10 +2118,11 @@ WttGtk::WttGtk( ...@@ -2115,10 +2118,11 @@ WttGtk::WttGtk(
pwr_tFileName fname; pwr_tFileName fname;
wb_rev_info rev_info; wb_rev_info rev_info;
char version[80]; char version[80];
pwr_tStatus revsts;
wb_revision::info( &rev_info); revsts = wb_revision::info( &rev_info);
if ( !rev_info.in_master) if ( ODD(revsts) && !rev_info.in_master)
strcpy( version, rev_info.name); strcpy( version, rev_info.name);
else else
strcpy( version, ""); strcpy( version, "");
...@@ -3087,7 +3091,7 @@ WttGtk::WttGtk( ...@@ -3087,7 +3091,7 @@ WttGtk::WttGtk(
g_object_set( cmd_input, "visible", FALSE, NULL); g_object_set( cmd_input, "visible", FALSE, NULL);
gtk_paned_set_position( GTK_PANED(wnav_paned), window_width / 2); gtk_paned_set_position( GTK_PANED(wnav_paned), window_width / 2);
wnav->get_options( &enable_comment, &show_class, &show_alias, wnav->get_options( &enable_comment, &enable_revisions, &show_class, &show_alias,
&show_descrip, &show_objref, &show_objxref, &show_descrip, &show_objref, &show_objxref,
&show_attrref, &show_attrxref, &build_force, &build_debug, &show_attrref, &show_attrxref, &build_force, &build_debug,
&build_crossref, &build_crossref_sim, &build_crossref_graph, &build_crossref, &build_crossref_sim, &build_crossref_graph,
...@@ -3122,7 +3126,7 @@ WttGtk::WttGtk( ...@@ -3122,7 +3126,7 @@ WttGtk::WttGtk(
menu_setup(); menu_setup();
update_title(); update_title();
if ( !rev_info.in_end_of_branch) { if ( ODD(revsts) && !rev_info.in_end_of_branch) {
wnav->wow->DisplayError( "Revision", "Revision is not at end o branch.\nNo changes can be made."); wnav->wow->DisplayError( "Revision", "Revision is not at end o branch.\nNo changes can be made.");
CoLogin::reduce_privilege( pwr_mPrv_DevConfig | pwr_mPrv_DevPlc | pwr_mPrv_DevClass); CoLogin::reduce_privilege( pwr_mPrv_DevConfig | pwr_mPrv_DevPlc | pwr_mPrv_DevClass);
} }
...@@ -3192,12 +3196,14 @@ void WttGtk::create_options_dialog() ...@@ -3192,12 +3196,14 @@ void WttGtk::create_options_dialog()
GtkWidget *hier_label = gtk_label_new( "Hierarchy"); GtkWidget *hier_label = gtk_label_new( "Hierarchy");
enable_comment_w = gtk_check_button_new_with_label( "Enable Comment"); enable_comment_w = gtk_check_button_new_with_label( "Enable Comment");
enable_revisions_w = gtk_check_button_new_with_label( "Enable Revisions");
show_plant_w = gtk_check_button_new_with_label( "Plant Configuration"); show_plant_w = gtk_check_button_new_with_label( "Plant Configuration");
show_node_w = gtk_check_button_new_with_label( "Node Configuration"); show_node_w = gtk_check_button_new_with_label( "Node Configuration");
GtkWidget *hier_vbox = gtk_vbox_new( FALSE, 0); GtkWidget *hier_vbox = gtk_vbox_new( FALSE, 0);
gtk_box_pack_start( GTK_BOX(hier_vbox), hier_label, FALSE, FALSE, 15); gtk_box_pack_start( GTK_BOX(hier_vbox), hier_label, FALSE, FALSE, 15);
gtk_box_pack_start( GTK_BOX(hier_vbox), enable_comment_w, FALSE, FALSE, 7); gtk_box_pack_start( GTK_BOX(hier_vbox), enable_comment_w, FALSE, FALSE, 7);
gtk_box_pack_start( GTK_BOX(hier_vbox), enable_revisions_w, FALSE, FALSE, 7);
gtk_box_pack_start( GTK_BOX(hier_vbox), show_plant_w, FALSE, FALSE, 7); gtk_box_pack_start( GTK_BOX(hier_vbox), show_plant_w, FALSE, FALSE, 7);
gtk_box_pack_start( GTK_BOX(hier_vbox), show_node_w, FALSE, FALSE, 7); gtk_box_pack_start( GTK_BOX(hier_vbox), show_node_w, FALSE, FALSE, 7);
......
...@@ -102,6 +102,7 @@ class WttGtk : public Wtt { ...@@ -102,6 +102,7 @@ class WttGtk : public Wtt {
GtkWidget *build_crossrefgraph_w; GtkWidget *build_crossrefgraph_w;
GtkWidget *build_manual_w; GtkWidget *build_manual_w;
GtkWidget *build_nocopy_w; GtkWidget *build_nocopy_w;
GtkWidget *enable_revisions_w;
GtkWidget *menu_save_w; GtkWidget *menu_save_w;
GtkWidget *menu_revert_w; GtkWidget *menu_revert_w;
GtkWidget *menu_cut_w; GtkWidget *menu_cut_w;
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include <vector> #include <vector>
#include "pwr.h" #include "pwr.h"
#include "pwr_names.h"
#include "co_time.h" #include "co_time.h"
#include "co_dcli.h" #include "co_dcli.h"
#include "wb_revision.h" #include "wb_revision.h"
...@@ -49,50 +50,37 @@ ...@@ -49,50 +50,37 @@
wb_revision::wb_revision( void *parent_ctx, wb_session *ses): wb_revision::wb_revision( void *parent_ctx, wb_session *ses):
m_parent_ctx(parent_ctx), m_session(ses), m_manager(0), m_manager_enum(pwr_eVersionManagerEnum_None), m_parent_ctx(parent_ctx), m_session(ses), m_manager(0), m_manager_enum(pwr_eVersionManagerEnum_Git),
m_read(false), m_current_idx(-1), m_current_main_idx(-1), m_current_sub_idx(-1), m_command_cb(0) m_read(false), m_current_idx(-1), m_current_main_idx(-1), m_current_sub_idx(-1), m_next_idx(0),
m_command_cb(0)
{ {
char current[80];
read_file(); read_file();
switch ( m_manager_enum) { switch ( m_manager_enum) {
case pwr_eVersionManagerEnum_Git: case pwr_eVersionManagerEnum_Git:
m_manager = new wb_version_manager_git(); m_manager = new wb_version_manager_git();
if ( EVEN(m_manager->sts())) {
delete m_manager;
m_manager = 0;
}
break; break;
default: ; default: ;
} }
if ( m_manager) { if ( m_manager) {
char current_name[80];
m_sts = m_manager->check( m_vect); m_sts = m_manager->check( m_vect);
bool found = false; m_sts = m_manager->get_current( current_name);
m_sts = m_manager->get_current( current); if ( ODD(m_sts))
if ( ODD(m_sts)) { set_current( current_name);
for ( unsigned int i = 0; i < m_vect.size(); i++) { else
if ( cdh_NoCaseStrcmp( current, m_vect[i].name) == 0) { set_current( m_current_idx);
m_current_idx = m_vect[i].idx; }
m_current_main_idx = i; else {
m_current_sub_idx = -1; set_current( m_current_idx);
m_vect[i].current = true;
found = true;
break;
}
for ( unsigned int j = 0; j < m_vect[i].vect.size(); j++) {
if ( cdh_NoCaseStrcmp( current, m_vect[i].vect[j].name) == 0) {
m_current_idx = m_vect[i].vect[j].idx;
m_current_main_idx = i;
m_current_sub_idx = j;
m_vect[i].vect[j].current = true;
m_vect[i].current_branch = true;
found = true;
break;
}
}
if ( found)
break;
}
}
} }
} }
...@@ -105,11 +93,75 @@ wb_revision::wb_revision(): ...@@ -105,11 +93,75 @@ wb_revision::wb_revision():
switch ( m_manager_enum) { switch ( m_manager_enum) {
case pwr_eVersionManagerEnum_Git: case pwr_eVersionManagerEnum_Git:
m_manager = new wb_version_manager_git(); m_manager = new wb_version_manager_git();
if ( EVEN(m_manager->sts())) {
delete m_manager;
m_manager = 0;
}
break; break;
default: ; default: ;
} }
} }
bool wb_revision::set_current( int idx)
{
bool found = false;
for ( unsigned int i = 0; i < m_vect.size(); i++) {
if ( m_vect[i].idx == idx) {
m_current_main_idx = i;
m_current_sub_idx = -1;
m_vect[i].current = true;
m_current_idx = idx;
found = true;
break;
}
for ( unsigned int j = 0; j < m_vect[i].vect.size(); j++) {
if ( m_vect[i].vect[j].idx == idx) {
m_current_main_idx = i;
m_current_sub_idx = j;
m_vect[i].vect[j].current = true;
m_vect[i].current_branch = true;
m_current_idx = idx;
found = true;
break;
}
}
if ( found)
break;
}
return found;
}
bool wb_revision::set_current( char *name)
{
bool found = false;
for ( unsigned int i = 0; i < m_vect.size(); i++) {
if ( cdh_NoCaseStrcmp( name, m_vect[i].name) == 0) {
m_current_idx = m_vect[i].idx;
m_current_main_idx = i;
m_current_sub_idx = -1;
m_vect[i].current = true;
found = true;
break;
}
for ( unsigned int j = 0; j < m_vect[i].vect.size(); j++) {
if ( cdh_NoCaseStrcmp( name, m_vect[i].vect[j].name) == 0) {
m_current_idx = m_vect[i].vect[j].idx;
m_current_main_idx = i;
m_current_sub_idx = j;
m_vect[i].vect[j].current = true;
m_vect[i].current_branch = true;
found = true;
break;
}
}
if ( found)
break;
}
return found;
}
char *wb_revision::branch_name( char *name) char *wb_revision::branch_name( char *name)
{ {
static char bname[80]; static char bname[80];
...@@ -141,6 +193,8 @@ pwr_tStatus wb_revision::create_check() ...@@ -141,6 +193,8 @@ pwr_tStatus wb_revision::create_check()
pwr_tStatus wb_revision::create( int all, char *name, char *descr) pwr_tStatus wb_revision::create( int all, char *name, char *descr)
{ {
if ( m_manager && !m_manager->modified())
return REV__NOCHANGE;
if ( all) { if ( all) {
// Get current volume // Get current volume
...@@ -216,7 +270,8 @@ pwr_tStatus wb_revision::create( int all, char *name, char *descr) ...@@ -216,7 +270,8 @@ pwr_tStatus wb_revision::create( int all, char *name, char *descr)
// Add to revision file // Add to revision file
add( name, descr, (char *)pwrv_cPwrVersionStr, 0, in_main, main_idx); add( name, descr, (char *)pwrv_cPwrVersionStr, 0, in_main, main_idx);
write_file(); set_current( m_next_idx - 1);
write_file();
wb_log::log( wlog_eCategory_NewRevision, name, descr); wb_log::log( wlog_eCategory_NewRevision, name, descr);
} }
...@@ -513,11 +568,10 @@ void wb_revision::read_file() ...@@ -513,11 +568,10 @@ void wb_revision::read_file()
{ {
pwr_tFileName fname; pwr_tFileName fname;
char line[200]; char line[200];
char item_array[6][80]; char item_array[7][80];
int sts; int sts;
int idx = 0;
dcli_translate_filename( fname, "$pwrp_db/pwrp_cnf_revision.dat"); dcli_translate_filename( fname, pwr_cNameRevision);
ifstream fp( fname, ios::in); ifstream fp( fname, ios::in);
if ( !fp) { if ( !fp) {
m_read = true; m_read = true;
...@@ -539,24 +593,40 @@ void wb_revision::read_file() ...@@ -539,24 +593,40 @@ void wb_revision::read_file()
m_manager_enum = pwr_eVersionManagerEnum_None; m_manager_enum = pwr_eVersionManagerEnum_None;
continue; continue;
} }
if ( nr != 5) { if ( nr == 3 && strcmp( item_array[0], "#!") == 0 && strcmp( item_array[1], "Current") == 0) {
int current;
int num;
num = sscanf( item_array[2], "%d", &current);
if ( num == 1)
m_current_idx = current;
else
m_current_idx = -1;
continue;
}
if ( nr != 6) {
m_sts = 0; m_sts = 0;
return; return;
} }
sts = sscanf( item_array[0], "%d", &item.level); sts = sscanf( item_array[0], "%d", &item.idx);
if ( sts != 1)
printf( "** Syntax error in configuration file\n");
sts = sscanf( item_array[1], "%d", &item.level);
if ( sts != 1) if ( sts != 1)
printf( "** Syntax error in configuration file\n"); printf( "** Syntax error in configuration file\n");
strncpy( item.name, item_array[1], sizeof(item.name)); strncpy( item.name, item_array[2], sizeof(item.name));
strncpy( item.description, item_array[2], sizeof(item.description)); strncpy( item.description, item_array[3], sizeof(item.description));
strncpy( item.version, item_array[3], sizeof(item.version)); strncpy( item.version, item_array[4], sizeof(item.version));
time_AsciiToA( item_array[4], &item.date); time_AsciiToA( item_array[5], &item.date);
item.idx = idx++;
if ( item.level == 0) if ( item.level == 0)
m_vect.push_back( item); m_vect.push_back( item);
else if ( m_vect.size() > 0) else if ( m_vect.size() > 0)
m_vect[m_vect.size()-1].vect.push_back(item); m_vect[m_vect.size()-1].vect.push_back(item);
if ( m_next_idx < item.idx + 1)
m_next_idx = item.idx + 1;
} }
fp.close(); fp.close();
...@@ -569,7 +639,7 @@ void wb_revision::read_file_meta() ...@@ -569,7 +639,7 @@ void wb_revision::read_file_meta()
char line[200]; char line[200];
char item_array[6][80]; char item_array[6][80];
dcli_translate_filename( fname, "$pwrp_db/pwrp_cnf_revision.dat"); dcli_translate_filename( fname, pwr_cNameRevision);
ifstream fp( fname, ios::in); ifstream fp( fname, ios::in);
if ( !fp) { if ( !fp) {
m_read = true; m_read = true;
...@@ -591,6 +661,17 @@ void wb_revision::read_file_meta() ...@@ -591,6 +661,17 @@ void wb_revision::read_file_meta()
m_manager_enum = pwr_eVersionManagerEnum_None; m_manager_enum = pwr_eVersionManagerEnum_None;
continue; continue;
} }
if ( nr == 3 && strcmp( item_array[0], "#!") == 0 && strcmp( item_array[1], "Current") == 0) {
int current;
int num;
num = sscanf( item_array[2], "%d", &current);
if ( num == 1)
m_current_idx = current;
else
m_current_idx = -1;
continue;
}
if ( strcmp( item_array[0], "#!") != 0) if ( strcmp( item_array[0], "#!") != 0)
break; break;
} }
...@@ -605,7 +686,7 @@ void wb_revision::write_file() ...@@ -605,7 +686,7 @@ void wb_revision::write_file()
if ( !m_read) if ( !m_read)
return; return;
dcli_translate_filename( fname, "$pwrp_db/pwrp_cnf_revision.dat"); dcli_translate_filename( fname, pwr_cNameRevision);
ofstream fp( fname, ios::out); ofstream fp( fname, ios::out);
if ( !fp) { if ( !fp) {
m_sts = 0; m_sts = 0;
...@@ -613,14 +694,15 @@ void wb_revision::write_file() ...@@ -613,14 +694,15 @@ void wb_revision::write_file()
} }
fp << "#! RevisionManager " << m_manager_enum << endl; fp << "#! RevisionManager " << m_manager_enum << endl;
fp << "#! Current " << m_current_idx << endl;
for ( unsigned int i = 0; i < m_vect.size(); i++) { for ( unsigned int i = 0; i < m_vect.size(); i++) {
time_AtoAscii( &m_vect[i].date, time_eFormat_DateAndTime, timestr, sizeof(timestr)); time_AtoAscii( &m_vect[i].date, time_eFormat_DateAndTime, timestr, sizeof(timestr));
fp << m_vect[i].level << " " << m_vect[i].name << " " << " \"" << m_vect[i].description << "\" " << m_vect[i].version << " \"" << timestr << "\"" << endl; fp << m_vect[i].idx << " " << m_vect[i].level << " " << m_vect[i].name << " " << " \"" << m_vect[i].description << "\" " << m_vect[i].version << " \"" << timestr << "\"" << endl;
for ( unsigned int j = 0; j < m_vect[i].vect.size(); j++) { for ( unsigned int j = 0; j < m_vect[i].vect.size(); j++) {
time_AtoAscii( &m_vect[i].vect[j].date, time_eFormat_DateAndTime, timestr, sizeof(timestr)); time_AtoAscii( &m_vect[i].vect[j].date, time_eFormat_DateAndTime, timestr, sizeof(timestr));
fp << m_vect[i].vect[j].level << " " << m_vect[i].vect[j].name << " " << " \"" << m_vect[i].vect[j].description << "\" " << m_vect[i].vect[j].version << " \"" << timestr << "\"" << endl; fp << m_vect[i].vect[j].idx << " " << m_vect[i].vect[j].level << " " << m_vect[i].vect[j].name << " " << " \"" << m_vect[i].vect[j].description << "\" " << m_vect[i].vect[j].version << " \"" << timestr << "\"" << endl;
} }
} }
fp.close(); fp.close();
...@@ -634,7 +716,7 @@ int wb_revision::add( char *name, char *description, char *version, pwr_tTime *d ...@@ -634,7 +716,7 @@ int wb_revision::add( char *name, char *description, char *version, pwr_tTime *d
if ( !m_read) if ( !m_read)
read_file(); read_file();
// Check the name is unique // Check that the name is unique
for ( unsigned int i = 0; i < m_vect.size(); i++) { for ( unsigned int i = 0; i < m_vect.size(); i++) {
if ( cdh_NoCaseStrcmp( name, m_vect[i].name) == 0) { if ( cdh_NoCaseStrcmp( name, m_vect[i].name) == 0) {
return 0; return 0;
...@@ -648,6 +730,7 @@ int wb_revision::add( char *name, char *description, char *version, pwr_tTime *d ...@@ -648,6 +730,7 @@ int wb_revision::add( char *name, char *description, char *version, pwr_tTime *d
item.date = *date; item.date = *date;
else else
time_GetTime( &item.date); time_GetTime( &item.date);
item.idx = m_next_idx++;
if ( in_main) { if ( in_main) {
item.level = 0; item.level = 0;
...@@ -719,11 +802,21 @@ void wb_revision::get_info( wb_rev_info *info) ...@@ -719,11 +802,21 @@ void wb_revision::get_info( wb_rev_info *info)
} }
} }
void wb_revision::info( wb_rev_info *info) pwr_tStatus wb_revision::info( wb_rev_info *info)
{ {
pwr_tFileName fname;
pwr_tStatus sts;
pwr_tTime time;
dcli_translate_filename( fname, pwr_cNameRevision);
sts = dcli_file_time( fname, &time);
if ( EVEN(sts)) return sts;
wb_revision *rev = new wb_revision( 0, 0); wb_revision *rev = new wb_revision( 0, 0);
rev->get_info( info); rev->get_info( info);
delete rev; delete rev;
return REV__SUCCESS;
} }
// //
...@@ -777,6 +870,23 @@ int wb_revision::check_add_file( char *filename) ...@@ -777,6 +870,23 @@ int wb_revision::check_add_file( char *filename)
return 0; return 0;
} }
bool wb_version_manager_git::m_found = false;
bool wb_version_manager_git::m_found_tested = false;
bool wb_version_manager_git::git_found()
{
if ( !m_found_tested) {
int sts;
sts = system( "git --version > /dev/null 2> /dev/null");
m_found = sts == 0 ? true : false;
m_found_tested = true;
if ( !m_found)
m_sts = REV__NOGIT;
}
return m_found;
}
void wb_version_manager_git::init() void wb_version_manager_git::init()
{ {
pwr_tFileName fname; pwr_tFileName fname;
...@@ -784,6 +894,9 @@ void wb_version_manager_git::init() ...@@ -784,6 +894,9 @@ void wb_version_manager_git::init()
pwr_tTime t; pwr_tTime t;
bool new_git = false; bool new_git = false;
if ( !git_found())
return;
dcli_translate_filename( m_git_dir, "$pwrp_root/src/.git"); dcli_translate_filename( m_git_dir, "$pwrp_root/src/.git");
dcli_translate_filename( m_work_tree, "$pwrp_root/src"); dcli_translate_filename( m_work_tree, "$pwrp_root/src");
if ( EVEN(dcli_file_time( m_git_dir, &t))) { if ( EVEN(dcli_file_time( m_git_dir, &t))) {
...@@ -841,7 +954,7 @@ db/rt_eventlog_info.txt" << endl; ...@@ -841,7 +954,7 @@ db/rt_eventlog_info.txt" << endl;
snprintf( cmd, sizeof(cmd), "git --git-dir=%s --work-tree=%s commit -m \"Initial commit\" -a", m_git_dir, m_work_tree); snprintf( cmd, sizeof(cmd), "git --git-dir=%s --work-tree=%s commit -m \"Initial commit\" -a", m_git_dir, m_work_tree);
system( cmd); system( cmd);
} }
m_sts = REV__SUCCESS;
} }
int wb_version_manager_git::store_revision( char *name, char *descr, bool new_branch) int wb_version_manager_git::store_revision( char *name, char *descr, bool new_branch)
...@@ -948,6 +1061,9 @@ int wb_version_manager_git::check( vector<wb_rev_item>& v) ...@@ -948,6 +1061,9 @@ int wb_version_manager_git::check( vector<wb_rev_item>& v)
pwr_tFileName fname = "$pwrp_tmp/git_tags.dat"; pwr_tFileName fname = "$pwrp_tmp/git_tags.dat";
char line[80]; char line[80];
if ( !git_found())
return REV__NOGIT;
dcli_translate_filename( fname, fname); dcli_translate_filename( fname, fname);
// Get current tag // Get current tag
...@@ -1012,3 +1128,11 @@ int wb_version_manager_git::check_add( char *filename) ...@@ -1012,3 +1128,11 @@ int wb_version_manager_git::check_add( char *filename)
return 1; return 1;
} }
bool wb_version_manager_git::modified()
{
int sts;
sts = system( "git diff --exit-code");
return sts != 0;
}
...@@ -76,9 +76,12 @@ class wb_version_manager ...@@ -76,9 +76,12 @@ class wb_version_manager
{ {
private: private:
pwr_eVersionManagerEnum m_manager; pwr_eVersionManagerEnum m_manager;
protected:
pwr_tStatus m_sts;
public: public:
wb_version_manager( pwr_eVersionManagerEnum manager) : m_manager(manager) {} wb_version_manager( pwr_eVersionManagerEnum manager) : m_manager(manager), m_sts(0) {}
pwr_tStatus sts() { return m_sts;}
virtual ~wb_version_manager() {} virtual ~wb_version_manager() {}
virtual void init() {} virtual void init() {}
virtual int store_revision( char *name, char *descr, bool new_branch) { return 0;} virtual int store_revision( char *name, char *descr, bool new_branch) { return 0;}
...@@ -86,10 +89,16 @@ class wb_version_manager ...@@ -86,10 +89,16 @@ class wb_version_manager
virtual int get_current( char *name) { return 0;} virtual int get_current( char *name) { return 0;}
virtual int check( vector<wb_rev_item>& v) { return 0;} virtual int check( vector<wb_rev_item>& v) { return 0;}
virtual int check_add( char *filename) { return 0;} virtual int check_add( char *filename) { return 0;}
virtual bool modified() { return true;}
}; };
class wb_version_manager_git : public wb_version_manager class wb_version_manager_git : public wb_version_manager
{ {
static bool m_found;
static bool m_found_tested;
bool git_found();
public: public:
wb_version_manager_git() : wb_version_manager(pwr_eVersionManagerEnum_None) { init();} wb_version_manager_git() : wb_version_manager(pwr_eVersionManagerEnum_None) { init();}
~wb_version_manager_git() {} ~wb_version_manager_git() {}
...@@ -101,6 +110,7 @@ class wb_version_manager_git : public wb_version_manager ...@@ -101,6 +110,7 @@ class wb_version_manager_git : public wb_version_manager
int get_current( char *name); int get_current( char *name);
int check( vector<wb_rev_item>& v); int check( vector<wb_rev_item>& v);
int check_add( char *filename); int check_add( char *filename);
bool modified();
}; };
class wb_revision : public wb_status class wb_revision : public wb_status
...@@ -115,6 +125,7 @@ class wb_revision : public wb_status ...@@ -115,6 +125,7 @@ class wb_revision : public wb_status
int m_current_idx; int m_current_idx;
int m_current_main_idx; int m_current_main_idx;
int m_current_sub_idx; int m_current_sub_idx;
int m_next_idx;
int (*m_command_cb)( void *ctx, char *cmd); int (*m_command_cb)( void *ctx, char *cmd);
public: public:
...@@ -129,6 +140,8 @@ class wb_revision : public wb_status ...@@ -129,6 +140,8 @@ class wb_revision : public wb_status
pwr_tStatus restore( char *name); pwr_tStatus restore( char *name);
pwr_tStatus build_all(); pwr_tStatus build_all();
pwr_tStatus remove( char *name); pwr_tStatus remove( char *name);
bool set_current( char *name);
bool set_current( int idx);
void read_file(); void read_file();
void read_file_meta(); void read_file_meta();
void write_file(); void write_file();
...@@ -146,7 +159,7 @@ class wb_revision : public wb_status ...@@ -146,7 +159,7 @@ class wb_revision : public wb_status
void next_name( char *name); void next_name( char *name);
static char *branch_name( char *name); static char *branch_name( char *name);
static void info( wb_rev_info *info); static pwr_tStatus info( wb_rev_info *info);
static int check_add_file( char *filename); static int check_add_file( char *filename);
}; };
......
...@@ -2271,6 +2271,9 @@ int WNav::setup() ...@@ -2271,6 +2271,9 @@ int WNav::setup()
new WItemLocal( this, "EnableComment", "setup_comment", new WItemLocal( this, "EnableComment", "setup_comment",
pwr_eType_Int32, sizeof( gbl.enable_comment), 0, 1, pwr_eType_Int32, sizeof( gbl.enable_comment), 0, 1,
(void *) &gbl.enable_comment, NULL, flow_eDest_IntoLast); (void *) &gbl.enable_comment, NULL, flow_eDest_IntoLast);
new WItemLocal( this, "EnableRevisions", "setup_revisions",
pwr_eType_Int32, sizeof( gbl.enable_revisions), 0, 1,
(void *) &gbl.enable_revisions, NULL, flow_eDest_IntoLast);
new WItemLocal( this, "AdvancedUser", "setup_advanceduser", new WItemLocal( this, "AdvancedUser", "setup_advanceduser",
pwr_eType_Int32, sizeof( gbl.advanced_user), 0, 1, pwr_eType_Int32, sizeof( gbl.advanced_user), 0, 1,
(void *) &gbl.advanced_user, NULL, flow_eDest_IntoLast); (void *) &gbl.advanced_user, NULL, flow_eDest_IntoLast);
...@@ -2351,12 +2354,13 @@ int WNavGbl::symbolfile_exec( void *wnav) ...@@ -2351,12 +2354,13 @@ int WNavGbl::symbolfile_exec( void *wnav)
return WNAV__SUCCESS; return WNAV__SUCCESS;
} }
void WNav::set_options( int ena_comment, int sh_class, int sh_alias, int sh_descrip, void WNav::set_options( int ena_comment, int ena_revisions, int sh_class, int sh_alias, int sh_descrip,
int sh_objref, int sh_objxref, int sh_attrref, int sh_attrxref, int sh_objref, int sh_objxref, int sh_attrref, int sh_attrxref,
int bu_force, int bu_debug, int bu_crossref, int bu_crossrefsim, int bu_force, int bu_debug, int bu_crossref, int bu_crossrefsim,
int bu_crossrefgraph, int bu_manual, int bu_nocopy) int bu_crossrefgraph, int bu_manual, int bu_nocopy)
{ {
gbl.enable_comment = ena_comment; gbl.enable_comment = ena_comment;
gbl.enable_revisions = ena_revisions;
gbl.show_class = sh_class; gbl.show_class = sh_class;
gbl.show_alias = sh_alias; gbl.show_alias = sh_alias;
gbl.show_descrip = sh_descrip; gbl.show_descrip = sh_descrip;
...@@ -2374,12 +2378,13 @@ void WNav::set_options( int ena_comment, int sh_class, int sh_alias, int sh_desc ...@@ -2374,12 +2378,13 @@ void WNav::set_options( int ena_comment, int sh_class, int sh_alias, int sh_desc
ldh_refresh( pwr_cNObjid); ldh_refresh( pwr_cNObjid);
} }
void WNav::get_options( int *ena_comment, int *sh_class, int *sh_alias, int *sh_descrip, void WNav::get_options( int *ena_comment, int *ena_revisions, int *sh_class, int *sh_alias, int *sh_descrip,
int *sh_objref, int *sh_objxref, int *sh_attrref, int *sh_attrxref, int *sh_objref, int *sh_objxref, int *sh_attrref, int *sh_attrxref,
int *bu_force, int *bu_debug, int *bu_crossref, int *bu_crossrefsim, int *bu_force, int *bu_debug, int *bu_crossref, int *bu_crossrefsim,
int *bu_crossrefgraph, int *bu_manual, int *bu_nocopy) int *bu_crossrefgraph, int *bu_manual, int *bu_nocopy)
{ {
*ena_comment = gbl.enable_comment; *ena_comment = gbl.enable_comment;
*ena_revisions = gbl.enable_revisions;
*sh_class = gbl.show_class; *sh_class = gbl.show_class;
*sh_alias = gbl.show_alias; *sh_alias = gbl.show_alias;
*sh_descrip = gbl.show_descrip; *sh_descrip = gbl.show_descrip;
...@@ -2486,6 +2491,11 @@ int WNav::save_settnings( ofstream& fp) ...@@ -2486,6 +2491,11 @@ int WNav::save_settnings( ofstream& fp)
else else
fp << " set nobuildnocopy /local" << endl; fp << " set nobuildnocopy /local" << endl;
if ( gbl.enable_revisions)
fp << " set enablerevisions /local" << endl;
else
fp << " set noenablerevisions /local" << endl;
if ( window_type == wnav_eWindowType_W1) if ( window_type == wnav_eWindowType_W1)
fp << "endif" << endl; fp << "endif" << endl;
else if ( window_type == wnav_eWindowType_W2) else if ( window_type == wnav_eWindowType_W2)
......
...@@ -202,7 +202,7 @@ class WNavGbl { ...@@ -202,7 +202,7 @@ class WNavGbl {
priv(0), verify(0), advanced_user(1), all_toplevel(0), bypass(0), priv(0), verify(0), advanced_user(1), all_toplevel(0), bypass(0),
show_class(1), show_alias(0), show_descrip(1), show_attrref(0), show_class(1), show_alias(0), show_descrip(1), show_attrref(0),
show_attrxref(0), show_objref(0), show_objxref(0), show_truedb(0), show_attrxref(0), show_objref(0), show_objxref(0), show_truedb(0),
enable_comment(0) enable_comment(0), enable_revisions(0)
{ {
strcpy( version, wnav_cVersion); strcpy( version, wnav_cVersion);
strcpy( platform, ""); strcpy( os, ""); strcpy( hw, ""); strcpy( platform, ""); strcpy( os, ""); strcpy( hw, "");
...@@ -231,6 +231,7 @@ class WNavGbl { ...@@ -231,6 +231,7 @@ class WNavGbl {
int show_objxref; int show_objxref;
int show_truedb; int show_truedb;
int enable_comment; int enable_comment;
int enable_revisions;
wb_build_opt build; wb_build_opt build;
int load_config( void *wnav); int load_config( void *wnav);
...@@ -412,11 +413,11 @@ class WNav : public WUtility{ ...@@ -412,11 +413,11 @@ class WNav : public WUtility{
void ldh_refresh( pwr_tObjid new_open); void ldh_refresh( pwr_tObjid new_open);
void refresh(); void refresh();
void collapse(); void collapse();
void set_options( int ena_comment, int sh_class, int sh_alias, int sh_descrip, void set_options( int ena_comment, int ena_revisions, int sh_class, int sh_alias, int sh_descrip,
int sh_objref, int sh_objxref, int sh_attrref, int sh_attrxref, int sh_objref, int sh_objxref, int sh_attrref, int sh_attrxref,
int bu_force, int bu_debug, int bu_crossref, int bu_crossrefsim, int bu_force, int bu_debug, int bu_crossref, int bu_crossrefsim,
int bu_crossrefgraph, int bu_manual, int bu_nocopy); int bu_crossrefgraph, int bu_manual, int bu_nocopy);
void get_options( int *ena_comment, int *sh_class, int *sh_alias, int *sh_descrip, void get_options( int *ena_comment, int *ena_revisions, int *sh_class, int *sh_alias, int *sh_descrip,
int *sh_objref, int *sh_objxref, int *sh_attrref, int *sh_attrxref, int *sh_objref, int *sh_objxref, int *sh_attrref, int *sh_attrxref,
int *bu_force, int *bu_debug, int *bu_crossref, int *bu_crossrefsim, int *bu_force, int *bu_debug, int *bu_crossref, int *bu_crossrefsim,
int *bu_crossrefgraph, int *bu_manual, int *bu_nocopy); int *bu_crossrefgraph, int *bu_manual, int *bu_nocopy);
......
...@@ -1398,6 +1398,20 @@ static int wnav_set_func( void *client_data, ...@@ -1398,6 +1398,20 @@ static int wnav_set_func( void *client_data,
else else
wnav->gbl.enable_comment = 0; wnav->gbl.enable_comment = 0;
} }
else if ( cdh_NoCaseStrncmp( arg1_str, "ENABLEREVISIONS", strlen( arg1_str)) == 0)
{
if ( EVEN( dcli_get_qualifier( "/LOCAL", 0, 0)))
(wnav->gbl_command_cb)( wnav->parent_ctx, "SET ENABLEREVISIONS");
else
wnav->gbl.enable_revisions = 1;
}
else if ( cdh_NoCaseStrncmp( arg1_str, "NOENABLEREVISIONS", strlen( arg1_str)) == 0)
{
if ( EVEN( dcli_get_qualifier( "/LOCAL", 0, 0)))
(wnav->gbl_command_cb)( wnav->parent_ctx, "SET NOENABLEREVISIONS");
else
wnav->gbl.enable_revisions = 0;
}
else if ( cdh_NoCaseStrncmp( arg1_str, "VERIFY", strlen( arg1_str)) == 0) else if ( cdh_NoCaseStrncmp( arg1_str, "VERIFY", strlen( arg1_str)) == 0)
{ {
if ( wnav->window_type == wnav_eWindowType_No) if ( wnav->window_type == wnav_eWindowType_No)
...@@ -5272,6 +5286,9 @@ static int wnav_build_func( void *client_data, ...@@ -5272,6 +5286,9 @@ static int wnav_build_func( void *client_data,
char namestr[80]; char namestr[80];
void *volumelist; void *volumelist;
int volumecount; int volumecount;
lfu_t_volumelist *vp;
int found;
int node_type;
if ( EVEN( dcli_get_qualifier( "/NAME", namestr, sizeof(namestr)))) { if ( EVEN( dcli_get_qualifier( "/NAME", namestr, sizeof(namestr)))) {
if ( EVEN( dcli_get_qualifier( "dcli_arg2", namestr, sizeof(namestr)))) { if ( EVEN( dcli_get_qualifier( "dcli_arg2", namestr, sizeof(namestr)))) {
...@@ -5288,13 +5305,29 @@ static int wnav_build_func( void *client_data, ...@@ -5288,13 +5305,29 @@ static int wnav_build_func( void *client_data,
return sts; return sts;
} }
found = 0;
vp = (lfu_t_volumelist *)volumelist;
for ( int i = 0; i < volumecount; i++) {
if ( cdh_NoCaseStrcmp( vp[i].p1, namestr) == 0) {
found = 1;
node_type = atoi( vp[i].p6);
break;
}
}
if ( !found) {
wnav->message( 'E', "No such node");
return WNAV__SYNTAX;
}
wb_build build( *(wb_session *)wnav->ldhses, wnav); wb_build build( *(wb_session *)wnav->ldhses, wnav);
build.opt.force = ODD( dcli_get_qualifier( "/FORCE", 0, 0)); build.opt.force = ODD( dcli_get_qualifier( "/FORCE", 0, 0));
build.opt.debug = ODD( dcli_get_qualifier( "/DEBUG", 0, 0)); build.opt.debug = ODD( dcli_get_qualifier( "/DEBUG", 0, 0));
build.opt.crossref = ODD( dcli_get_qualifier( "/CROSSREFERENCE", 0, 0)); build.opt.crossref = ODD( dcli_get_qualifier( "/CROSSREFERENCE", 0, 0));
build.opt.manual = ODD( dcli_get_qualifier( "/MANUAL", 0, 0)); build.opt.manual = ODD( dcli_get_qualifier( "/MANUAL", 0, 0));
build.node( namestr, volumelist, volumecount); build.node( vp->p1, node_type, volumelist, volumecount);
wnav->message(' ', wnav_get_message(build.sts())); wnav->message(' ', wnav_get_message(build.sts()));
command_sts = build.sts(); command_sts = build.sts();
......
...@@ -85,6 +85,16 @@ void WRev::store_ok_cb( WRev *wrev, char *text1, char *text2) ...@@ -85,6 +85,16 @@ void WRev::store_ok_cb( WRev *wrev, char *text1, char *text2)
{ {
pwr_tStatus sts; pwr_tStatus sts;
if ( strcmp( text1, "") == 0 ) {
wrev->wow->DisplayError( "Syntax Error", "Revision name is missing");
return;
}
if ( strcmp( text2, "") == 0 ) {
wrev->wow->DisplayError( "Syntax Error", "Description is missing");
return;
}
wrev->set_clock_cursor(); wrev->set_clock_cursor();
sts = wrev->wrevnav->rev->create( 1, text1, text2); sts = wrev->wrevnav->rev->create( 1, text1, text2);
...@@ -104,7 +114,7 @@ void WRev::activate_store() ...@@ -104,7 +114,7 @@ void WRev::activate_store()
// Check if new revision is allowed // Check if new revision is allowed
sts = wrevnav->rev->create_check(); sts = wrevnav->rev->create_check();
if ( EVEN(sts)) { if ( EVEN(sts)) {
wow->DisplayError( "New Revision Error", "New revksion can't be created\nCurrent revision is not at end of branch"); wow->DisplayError( "New Revision Error", "New revision can't be created\nCurrent revision is not at end of branch");
return; return;
} }
...@@ -277,4 +287,4 @@ WRev::~WRev() ...@@ -277,4 +287,4 @@ WRev::~WRev()
WRev::WRev( void *wa_parent_ctx, ldh_tSession wa_ldhses) WRev::WRev( void *wa_parent_ctx, ldh_tSession wa_ldhses)
: parent_ctx(wa_parent_ctx), ldhses(wa_ldhses), close_cb(0), command_cb(0), dialog_count(0) : parent_ctx(wa_parent_ctx), ldhses(wa_ldhses), close_cb(0), command_cb(0), dialog_count(0)
{ {
} }
\ No newline at end of file
...@@ -1004,7 +1004,15 @@ void Wtt::activate_revert() ...@@ -1004,7 +1004,15 @@ void Wtt::activate_revert()
void Wtt::activate_revisions() void Wtt::activate_revisions()
{ {
wnavnode->command( (char *)"open revisions"); if ( !focused_wnav)
set_focus_default();
if ( !focused_wnav->gbl.enable_revisions) {
focused_wnav->wow->DisplayError( "Revisions",
"Revision is not enabled.\nEnable revisions in Tools/Settings.");
return;
}
focused_wnav->command( (char *)"open revisions");
} }
void Wtt::activate_syntax() void Wtt::activate_syntax()
...@@ -2012,6 +2020,7 @@ void Wtt::activate_buildnode() ...@@ -2012,6 +2020,7 @@ void Wtt::activate_buildnode()
{ {
pwr_tStatus sts; pwr_tStatus sts;
lfu_t_volumelist *vp, *volp; lfu_t_volumelist *vp, *volp;
int node_type;
message(' ',""); message(' ',"");
...@@ -2052,9 +2061,10 @@ void Wtt::activate_buildnode() ...@@ -2052,9 +2061,10 @@ void Wtt::activate_buildnode()
if ( !focused_wnav) if ( !focused_wnav)
set_focus_default(); set_focus_default();
build->opt = focused_wnav->gbl.build; build->opt = focused_wnav->gbl.build;
node_type = atoi(vp->p6);
set_clock_cursor(); set_clock_cursor();
build->node( volp->p1, boot_volumelist, boot_volumecount); build->node( volp->p1, node_type, boot_volumelist, boot_volumecount);
reset_cursor(); reset_cursor();
if ( build->evenSts()) { if ( build->evenSts()) {
char msg[80]; char msg[80];
......
...@@ -190,6 +190,7 @@ class Wtt : public WUtility { ...@@ -190,6 +190,7 @@ class Wtt : public WUtility {
int build_crossref_graph; int build_crossref_graph;
int build_manual; int build_manual;
int build_nocopy; int build_nocopy;
int enable_revisions;
int wnav_mapped; int wnav_mapped;
int wnavnode_mapped; int wnavnode_mapped;
WUted *utedctx; WUted *utedctx;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment