00001
00002
00006 #ifndef __BRORG_FUNCTIONS_H__
00007 #define __BRORG_FUNCTIONS_H__
00008 #include "SheppCommandFunctions.H"
00009
00010 #include "BrOrgCheck.H"
00011 #include "BrOrgInfo.H"
00012 #include "BrOrgCreate.H"
00013 #include "BrOrgUpdate.H"
00014
00016
00021 int cmd_brorg_help(string error_msg, string specific = "")
00022 {
00023 if (error_msg != "") {
00024 printf("error: %s\n", error_msg.c_str());
00025 }
00026
00027 printf("brorg command syntax help:\n");
00028 printf("\n");
00029
00030 if (specific == "" || specific == "check") {
00031 printf(" check <brorg1> [brorg2 ... brorgN]\n");
00032 printf("\n");
00033 }
00034 if (specific == "" || specific == "info") {
00035 printf(" info <brorg> [-auth authInfoPw[:authInfoRoid]]\n");
00036 printf("\n");
00037 }
00038 if (specific == "" || specific == "transfer") {
00039 printf(" transfer: not implemented\n");
00040 printf("\n");
00041 }
00042 if (specific == "" || specific == "create") {
00043 printf(" create <brorg>\n");
00044 printf(" [-postalInfo <type> <-name \"BrOrg Name\"> "
00045 "[-org \"Org Name\"]\n");
00046 printf(" <-street1 \"address street/line 1\"> "
00047 "[-street2 \"address number/line 2\"]\n");
00048 printf(" [-street3 \"address line 3\"] <-city \"City Name\"> "
00049 "[-state \"State or Province\"]\n");
00050 printf(" [-pc \"postal code\"] <-cc country-code> ...]\n");
00051 printf(" <-voice number:ext> [-fax number:ext]\n");
00052 printf(" <-email emailAddr> [-auth authInfoPw[:authInfoRoid]]\n");
00053 printf(" [-disclose opt,opt,...] "
00054 " [-responsible \"Responsible Name\"]\n"
00055 " -contact key=value[,key=value,...]\n");
00056 printf("\n");
00057 printf(" available values for opt:\n");
00058 printf(" {name_int name_loc org_int org_loc addr_int addr_loc "
00059 "voice fax email}\n");
00060 printf("\n");
00061 }
00062 if (specific == "" || specific == "delete") {
00063 printf(" delete: not implemented\n");
00064 printf("\n");
00065 }
00066 if (specific == "" || specific == "renew") {
00067 printf(" renew: not implemented\n");
00068 printf("\n");
00069 }
00070 if (specific == "" || specific == "update") {
00071 printf(" update <brorg> [-add-status st1,...,stN] "
00072 "[-rem-status st1,...,stN]\n");
00073 printf(" [-postalInfo <type> [-name \"BrOrg Name\"] "
00074 "[-org \"Org Name\"]\n");
00075 printf(" [-street1 \"address street/line 1\"] "
00076 "[-street2 \"address number/line 2\"]\n");
00077 printf(" [-street3 \"address line 3\"] [-city \"City Name\"] "
00078 "[-state \"State or Province\"]\n");
00079 printf(" [-pc \"postal code\"] [-cc country-code] ...]\n");
00080 printf(" [-voice number:ext] [-fax number:ext]\n");
00081 printf(" [-email emailAddr] [-auth authInfoPw[:authInfoRoid]] "
00082 "[-disclose opt,opt,...]\n");
00083 printf(" [-responsible \"Responsible Name\"]\n");
00084 printf(" [-exdate expirationDate]\n");
00085 printf(" [-add-contact key=value[,key=value,...]\n");
00086 printf(" [-rem-contact key=value[,key=value,...]\n");
00087 printf("\n");
00088 printf(" available values for opt:\n");
00089 printf(" {name_int name_loc org_int org_loc addr_int addr_loc "
00090 "voice fax email}\n");
00091 printf("\n");
00092 }
00093
00094 if (error_msg != "") {
00095 return -1;
00096 }
00097
00098 return 0;
00099 }
00100
00102
00106 int cmd_brorg_check(vector<string> &args)
00107 {
00108 BrOrgCheck act;
00109 BrOrgCheckCmd *cmd = act.get_command();
00110 string cmd_name = "check";
00111
00112 string id;
00113 int counter = 0;
00114 while (!args.empty()) {
00115 string numbers = SheppStrUtil::doc2id(args[0]);
00116 cmd->insert_id(numbers);
00117 cmd->insert_organization(numbers, args[0]);
00118 args.erase(args.begin());
00119 counter++;
00120 }
00121
00122 if (cmd->get_id_list().empty() || cmd->get_organization_list().empty()) {
00123 return cmd_brorg_help("no brorg specified", cmd_name);
00124 }
00125
00126 if (_debug) {
00127 map<string, string, less<string> > brorgs = cmd->get_organization_list();
00128 map<string, string, less<string> >::const_iterator it;
00129 printf("brorgs to be checked:\n");
00130 for (it = brorgs.begin(); it != brorgs.end(); it++) {
00131 printf(" id: [%s] org: [%s]\n", (*it).first.c_str(),
00132 (*it).second.c_str());
00133 }
00134 }
00135
00136 if (process_action(act) != 0) {
00137 return -1;
00138 }
00139
00140 return 0;
00141 }
00142
00144
00148 int cmd_brorg_info(vector<string> &args)
00149 {
00150 BrOrgInfo act;
00151 BrOrgInfoCmd *cmd = act.get_command();
00152 string cmd_name = "info";
00153
00154 if (args.empty()) {
00155 return cmd_brorg_help("no brorg specified", cmd_name);
00156 }
00157
00158 cmd->set_id(SheppStrUtil::doc2id(args[0]));
00159 cmd->set_organization(args[0]);
00160 args.erase(args.begin());
00161
00162 while (!args.empty()) {
00163 if (args[0] == "-auth") {
00164
00165 AuthInfo auth;
00166 if (SheppObjSet::authInfo(auth, args) != 0) {
00167 return cmd_brorg_help("invalid auth", cmd_name);
00168 }
00169 cmd->set_authInfo(auth);
00170 } else {
00171 return cmd_brorg_help("invalid syntax near \"" + args[0] + "\"",
00172 cmd_name);
00173 }
00174
00175 }
00176
00177 if (_debug) {
00178 printf("id to get info: [%s]\n", cmd->get_id().c_str());
00179 printf("org to get info: [%s]\n", cmd->get_organization().c_str());
00180 SheppPrint::authInfo(cmd->get_authInfo());
00181 }
00182
00183 if (process_action(act) != 0) {
00184 return -1;
00185 }
00186
00187 return 0;
00188 }
00189
00191
00195 int cmd_brorg_transfer(vector<string> &args)
00196 {
00197 string cmd_name = "transfer";
00198 return cmd_brorg_help("", cmd_name);
00199 }
00200
00202
00206 int cmd_brorg_create(vector<string> &args)
00207 {
00208 BrOrgCreate act;
00209 BrOrgCreateCmd *cmd = act.get_command();
00210 string cmd_name = "create";
00211
00212 if (args.empty()) {
00213 return cmd_brorg_help("no brorg specified", cmd_name);
00214 }
00215
00216 CommonData common_data;
00217
00218 common_data.set_id(SheppStrUtil::doc2id(args[0]));
00219 cmd->set_organization(args[0]);
00220
00221 args.erase(args.begin());
00222
00223
00224 AuthInfo auth;
00225 cmd->set_authInfo(auth);
00226
00227 while (!args.empty()) {
00228 if (args[0] == "-postalInfo") {
00229
00230 args.erase(args.begin());
00231 if (args.empty()) {
00232 return cmd_brorg_help("missing postal info arguments", cmd_name);
00233 }
00234 PostalInfo postal;
00235 string error_msg;
00236 if (SheppObjSet::postalInfo(postal, args, error_msg, false) != 0) {
00237 return cmd_brorg_help(error_msg, cmd_name);
00238 }
00239 vector<PostalInfo> postal_list = common_data.get_postal_info();
00240 for (int i = 0; i < (int) postal_list.size(); i++) {
00241 if (postal_list[i].get_type() == postal.get_type()) {
00242 return cmd_brorg_help("duplicated postal info type", cmd_name);
00243 }
00244 }
00245 common_data.insert_postal_info(postal);
00246 } else if (args[0] == "-voice") {
00247
00248 args.erase(args.begin());
00249 CommonData::Phone phone;
00250 if (SheppObjSet::phone(phone, args) != 0) {
00251 return cmd_brorg_help("error setting voice telephone number",
00252 cmd_name);
00253 }
00254 common_data.set_voice(phone);
00255 } else if (args[0] == "-fax") {
00256
00257 args.erase(args.begin());
00258 CommonData::Phone phone;
00259 if (SheppObjSet::phone(phone, args) != 0) {
00260 return cmd_brorg_help("error setting fax telephone number",
00261 cmd_name);
00262 }
00263 common_data.set_fax(phone);
00264 } else if (args[0] == "-email") {
00265
00266 args.erase(args.begin());
00267 if (args.empty()) {
00268 return cmd_brorg_help("no e-mail address specified", cmd_name);
00269 }
00270 common_data.set_email(args[0]);
00271 args.erase(args.begin());
00272 } else if (args[0] == "-auth") {
00273
00274 AuthInfo auth;
00275 if (SheppObjSet::authInfo(auth, args) != 0) {
00276 return cmd_brorg_help("invalid auth", cmd_name);
00277 }
00278 cmd->set_authInfo(auth);
00279 } else if (args[0] == "-disclose") {
00280
00281 args.erase(args.begin());
00282 CommonData::Disclose disclose;
00283 if (SheppObjSet::disclose(disclose, args[0]) != 0) {
00284 return cmd_brorg_help("invalid diclose information", cmd_name);
00285 }
00286 args.erase(args.begin());
00287 common_data.set_disclose(disclose);
00288 } else if (args[0] == "-contact") {
00289
00290 args.erase(args.begin());
00291 if (args.empty()) {
00292 return cmd_brorg_help("-contact requires an argument", cmd_name);
00293 }
00294 map<string, string, less<string> > my_contacts;
00295 string error_msg;
00296 if (SheppObjSet::contacts(my_contacts, args[0], error_msg) != 0) {
00297 return cmd_brorg_help(error_msg, cmd_name);
00298 }
00299 map<string, string, less<string> >::const_iterator it;
00300 for (it = my_contacts.begin(); it != my_contacts.end(); it++) {
00301 cmd->insert_contact((*it).first, (*it).second);
00302 }
00303 args.erase(args.begin());
00304 } else if (args[0] == "-responsible") {
00305
00306 args.erase(args.begin());
00307 if (args.empty()) {
00308 return cmd_brorg_help("unspecified responsible name", cmd_name);
00309 }
00310 string responsible_name = args[0];
00311 args.erase(args.begin());
00312 if (SheppStrUtil::quote_gathering(args, responsible_name) != 0) {
00313 return cmd_brorg_help("error setting responsible name", cmd_name);
00314 }
00315 cmd->set_responsible(responsible_name);
00316 } else {
00317 return cmd_brorg_help("invalid syntax near \"" + args[0] + "\"",
00318 cmd_name);
00319 }
00320 }
00321
00322 if (common_data.get_postal_info().empty()) {
00323 return cmd_brorg_help("at least one postal info must be entered",
00324 cmd_name);
00325 }
00326
00327 if (common_data.get_email() == "") {
00328 return cmd_brorg_help("e-mail is mandatory", cmd_name);
00329 }
00330
00331 if (common_data.get_voice().number == "") {
00332 return cmd_brorg_help("voice telephone number is mandatory", cmd_name);
00333 }
00334
00335 if (cmd->get_organization() == "") {
00336 return cmd_brorg_help("orgid unset", cmd_name);
00337 }
00338
00339 if (cmd->get_contact_list().empty()) {
00340 return cmd_brorg_help("at least one contact must be entered", cmd_name);
00341 }
00342
00343 cmd->set_common_data(common_data);
00344
00345 if (_debug) {
00346 printf(" brorg: [%s]\n", cmd->get_common_data().get_id().c_str());
00347
00348 vector<PostalInfo>::const_iterator it;
00349 vector<PostalInfo> postal_list;
00350 postal_list = cmd->get_common_data().get_postal_info();
00351 for (it = postal_list.begin(); it != postal_list.end(); it++) {
00352 SheppPrint::postal_info((*it));
00353 }
00354
00355 if (cmd->get_common_data().get_voice().number != "") {
00356 printf(" voice:");
00357 SheppPrint::phone(cmd->get_common_data().get_voice());
00358 }
00359
00360 if (cmd->get_common_data().get_fax().number != "") {
00361 printf(" fax :");
00362 SheppPrint::phone(cmd->get_common_data().get_fax());
00363 }
00364
00365 printf(" email: [%s]\n", cmd->get_common_data().get_email().c_str());
00366
00367 SheppPrint::authInfo(cmd->get_authInfo());
00368
00369 if (cmd->get_common_data().get_disclose().is_set()) {
00370 SheppPrint::disclose(cmd->get_common_data().get_disclose());
00371 }
00372
00373
00374 printf(" orgid: [%s]\n", cmd->get_organization().c_str());
00375
00376 map<string, string, less<string> > contacts = cmd->get_contact_list();
00377 map<string, string, less<string> >::const_iterator c_it;
00378 for (c_it = contacts.begin(); c_it != contacts.end(); c_it++) {
00379 printf(" contact[%s] = [%s]\n", (*c_it).first.c_str(),
00380 (*c_it).second.c_str());
00381 }
00382 }
00383
00384 if (process_action(act) != 0) {
00385 return -1;
00386 }
00387
00388 return 0;
00389 }
00390
00392
00396 int cmd_brorg_delete(vector<string> &args)
00397 {
00398 string cmd_name = "delete";
00399 return cmd_brorg_help("", cmd_name);
00400 }
00401
00403
00407 int cmd_brorg_renew(vector<string> &args)
00408 {
00409 string cmd_name = "renew";
00410 return cmd_brorg_help("", cmd_name);
00411 }
00412
00414
00418 int cmd_brorg_update(vector<string> &args)
00419 {
00420 BrOrgUpdate act;
00421 BrOrgUpdateCmd *cmd = act.get_command();
00422 string cmd_name = "update";
00423
00424 if (args.empty()) {
00425 return cmd_brorg_help("no brorg specified", cmd_name);
00426 }
00427
00428 CommonData common_data;
00429 common_data.set_id(SheppStrUtil::doc2id(args[0]));
00430
00431 cmd->set_organization(args[0]);
00432 args.erase(args.begin());
00433
00434 while (!args.empty()) {
00435 if (args[0] == "-add-status") {
00436
00437 args.erase(args.begin());
00438 if (args.empty()) {
00439 return cmd_brorg_help("error setting add-status", cmd_name);
00440 }
00441 string tmp1 = args[0];
00442 string tmp2;
00443 while (SheppStrUtil::split(tmp1, tmp1, tmp2, ",", true) == 0) {
00444 cmd->insert_status_list_add(tmp1);
00445 if (tmp2 == "") {
00446 break;
00447 }
00448 tmp1 = tmp2;
00449 }
00450 args.erase(args.begin());
00451 } else if (args[0] == "-rem-status") {
00452
00453 args.erase(args.begin());
00454 if (args.empty()) {
00455 return cmd_brorg_help("error setting rem-status", cmd_name);
00456 }
00457 string tmp1 = args[0];
00458 string tmp2;
00459 while (SheppStrUtil::split(tmp1, tmp1, tmp2, ",", true) == 0) {
00460 cmd->insert_status_list_rem(tmp1);
00461 if (tmp2 == "") {
00462 break;
00463 }
00464 tmp1 = tmp2;
00465 }
00466 args.erase(args.begin());
00467 } else if (args[0] == "-postalInfo") {
00468
00469 args.erase(args.begin());
00470 if (args.empty()) {
00471 return cmd_brorg_help("missing postal info arguments", cmd_name);
00472 }
00473 PostalInfo postal;
00474 string error_msg;
00475 if (SheppObjSet::postalInfo(postal, args, error_msg, true) != 0) {
00476 return cmd_brorg_help(error_msg, cmd_name);
00477 }
00478 vector<PostalInfo> postal_list = common_data.get_postal_info();
00479 for (int i = 0; i < (int) postal_list.size(); i++) {
00480 if (postal_list[i].get_type() == postal.get_type()) {
00481 return cmd_brorg_help("duplicated postal info type", cmd_name);
00482 }
00483 }
00484 common_data.insert_postal_info(postal);
00485 } else if (args[0] == "-voice") {
00486
00487 args.erase(args.begin());
00488 CommonData::Phone phone;
00489 if (SheppObjSet::phone(phone, args) != 0) {
00490 return cmd_brorg_help("error setting voice telephone number",
00491 cmd_name);
00492 }
00493 common_data.set_voice(phone);
00494 } else if (args[0] == "-fax") {
00495
00496 args.erase(args.begin());
00497 CommonData::Phone phone;
00498 if (SheppObjSet::phone(phone, args) != 0) {
00499 return cmd_brorg_help("error setting fax telephone number",
00500 cmd_name);
00501 }
00502 common_data.set_fax(phone);
00503 } else if (args[0] == "-email") {
00504
00505 args.erase(args.begin());
00506 if (args.empty()) {
00507 return cmd_brorg_help("no e-mail address specified", cmd_name);
00508 }
00509 common_data.set_email(args[0]);
00510 args.erase(args.begin());
00511 } else if (args[0] == "-auth") {
00512
00513 AuthInfo auth;
00514 if (SheppObjSet::authInfo(auth, args) != 0) {
00515 return cmd_brorg_help("invalid auth", cmd_name);
00516 }
00517 cmd->set_authInfo(auth);
00518 } else if (args[0] == "-disclose") {
00519
00520 args.erase(args.begin());
00521 CommonData::Disclose disclose;
00522 if (SheppObjSet::disclose(disclose, args[0]) != 0) {
00523 return cmd_brorg_help("invalid diclose information", cmd_name);
00524 }
00525 args.erase(args.begin());
00526 common_data.set_disclose(disclose);
00527 } else if (args[0] == "-add-contact") {
00528
00529 args.erase(args.begin());
00530 if (args.empty()) {
00531 return cmd_brorg_help("-add-contact requires an argument",
00532 cmd_name);
00533 }
00534 map<string, string, less<string> > my_contacts;
00535 string error_msg;
00536 if (SheppObjSet::contacts(my_contacts, args[0], error_msg) != 0) {
00537 return cmd_brorg_help(error_msg, cmd_name);
00538 }
00539 map<string, string, less<string> >::const_iterator it;
00540 for (it = my_contacts.begin(); it != my_contacts.end(); it++) {
00541 cmd->insert_contact_add((*it).first, (*it).second);
00542 }
00543 args.erase(args.begin());
00544 } else if (args[0] == "-rem-contact") {
00545
00546 args.erase(args.begin());
00547 if (args.empty()) {
00548 return cmd_brorg_help("-rem-contact requires an argument",
00549 cmd_name);
00550 }
00551 map<string, string, less<string> > my_contacts;
00552 string error_msg;
00553 if (SheppObjSet::contacts(my_contacts, args[0], error_msg) != 0) {
00554 return cmd_brorg_help(error_msg, cmd_name);
00555 }
00556 map<string, string, less<string> >::const_iterator it;
00557 for (it = my_contacts.begin(); it != my_contacts.end(); it++) {
00558 cmd->insert_contact_rem((*it).first, (*it).second);
00559 }
00560 args.erase(args.begin());
00561
00562 } else if (args[0] == "-responsible") {
00563
00564 args.erase(args.begin());
00565 if (args.empty()) {
00566 return cmd_brorg_help("unspecified responsible name", cmd_name);
00567 }
00568 string responsible_name = args[0];
00569 args.erase(args.begin());
00570 if (SheppStrUtil::quote_gathering(args, responsible_name) != 0) {
00571 return cmd_brorg_help("error setting responsible name", cmd_name);
00572 }
00573 cmd->set_responsible(responsible_name);
00574 } else if (args[0] == "-exdate") {
00575
00576 args.erase(args.begin());
00577 if (args.empty()) {
00578 return cmd_brorg_help("unspecified expiration date", cmd_name);
00579 }
00580 cmd->set_exDate(args[0]);
00581 args.erase(args.begin());
00582 } else {
00583 return cmd_brorg_help("invalid syntax near \"" + args[0] + "\"",
00584 cmd_name);
00585 }
00586 }
00587
00588 if (cmd->get_status_list_add().empty() &&
00589 cmd->get_status_list_rem().empty() &&
00590 common_data.get_postal_info().empty() &&
00591 common_data.get_voice().number == "" &&
00592 common_data.get_fax().number == "" &&
00593 common_data.get_email() == "" &&
00594 cmd->get_authInfo().get_pw() == "" &&
00595 !common_data.get_disclose().is_set() &&
00596 cmd->get_organization() == "") {
00597 return cmd_brorg_help("not enough information for update", cmd_name);
00598 }
00599
00600 cmd->set_common_data(common_data);
00601
00602 if (_debug) {
00603 printf(" brorg: [%s]\n", cmd->get_common_data().get_id().c_str());
00604
00605 set<string> status = cmd->get_status_list_add();
00606 set<string>::const_iterator st_it;
00607 if (!status.empty()) {
00608 printf(" status to add: [ ");
00609 for (st_it = status.begin(); st_it != status.end(); st_it++) {
00610 printf("%s ", (*st_it).c_str());
00611 }
00612 printf("]\n");
00613 }
00614
00615 status = cmd->get_status_list_rem();
00616 if (!status.empty()) {
00617 printf(" status to rem: [ ");
00618 for (st_it = status.begin(); st_it != status.end(); st_it++) {
00619 printf("%s ", (*st_it).c_str());
00620 }
00621 printf("]\n");
00622 }
00623
00624 vector<PostalInfo> postal_list;
00625 postal_list = cmd->get_common_data().get_postal_info();
00626 for (int i = 0; i < (int) postal_list.size(); i++) {
00627 SheppPrint::postal_info(postal_list[i]);
00628 }
00629
00630 if (cmd->get_common_data().get_voice().number != "") {
00631 printf(" voice:");
00632 SheppPrint::phone(cmd->get_common_data().get_voice());
00633 }
00634
00635 if (cmd->get_common_data().get_fax().number != "") {
00636 printf(" fax :");
00637 SheppPrint::phone(cmd->get_common_data().get_fax());
00638 }
00639
00640 if (cmd->get_common_data().get_email() != "") {
00641 printf(" email: [%s]\n", cmd->get_common_data().get_email().c_str());
00642 }
00643
00644 if (cmd->get_authInfo().get_pw() != "") {
00645 SheppPrint::authInfo(cmd->get_authInfo());
00646 }
00647
00648 if (cmd->get_common_data().get_disclose().is_set()) {
00649 SheppPrint::disclose(cmd->get_common_data().get_disclose());
00650 }
00651
00652
00653 if (cmd->get_organization() != "") {
00654 printf(" orgid: [%s]\n", cmd->get_organization().c_str());
00655
00656 map<string, string, less<string> > contacts =
00657 cmd->get_contact_list_add();
00658 map<string, string, less<string> >::const_iterator c_it;
00659 for (c_it = contacts.begin(); c_it != contacts.end(); c_it++) {
00660 printf(" contact to add [%s] = [%s]\n", (*c_it).first.c_str(),
00661 (*c_it).second.c_str());
00662 }
00663
00664 contacts = cmd->get_contact_list_rem();
00665 for (c_it = contacts.begin(); c_it != contacts.end(); c_it++) {
00666 printf(" contact to rem [%s] = [%s]\n", (*c_it).first.c_str(),
00667 (*c_it).second.c_str());
00668 }
00669 }
00670 }
00671
00672 if (process_action(act) != 0) {
00673 return -1;
00674 }
00675
00676 return 0;
00677 }
00678
00680
00684 int cmd_brorg(vector<string> &args)
00685 {
00686
00687 if (!args.empty() && !(args[0] == "help")) {
00688 if (args[0] == "check") {
00689 args.erase(args.begin());
00690 return cmd_brorg_check(args);
00691 } else if (args[0] == "info") {
00692 args.erase(args.begin());
00693 return cmd_brorg_info(args);
00694 } else if (args[0] == "transfer") {
00695 args.erase(args.begin());
00696 return cmd_brorg_transfer(args);
00697 } else if (args[0] == "create") {
00698 args.erase(args.begin());
00699 return cmd_brorg_create(args);
00700 } else if (args[0] == "delete") {
00701 args.erase(args.begin());
00702 return cmd_brorg_delete(args);
00703 } else if (args[0] == "renew") {
00704 args.erase(args.begin());
00705 return cmd_brorg_renew(args);
00706 } else if (args[0] == "update") {
00707 args.erase(args.begin());
00708 return cmd_brorg_update(args);
00709 } else {
00710 return cmd_brorg_help("invalid command: brorg " + args[0]);
00711 }
00712 }
00713
00714 return cmd_brorg_help("");
00715 }
00716
00717 #endif //__BRORG_FUNCTIONS_H__