diff options
author | onefang | 2021-07-30 04:58:57 +1000 |
---|---|---|
committer | onefang | 2021-07-30 04:58:57 +1000 |
commit | 5cc9a764e72fa14dca2ec2097217b26d9832b77f (patch) | |
tree | a21dea8d1df5ab22259670a785f4cce71323e1e1 | |
parent | More rejigging of painful tmux panes. (diff) | |
download | opensim-SC-5cc9a764e72fa14dca2ec2097217b26d9832b77f.zip opensim-SC-5cc9a764e72fa14dca2ec2097217b26d9832b77f.tar.gz opensim-SC-5cc9a764e72fa14dca2ec2097217b26d9832b77f.tar.bz2 opensim-SC-5cc9a764e72fa14dca2ec2097217b26d9832b77f.tar.xz |
Add backup_IARsim config variable.
Only using it for newbie IAR loading for now, coz I haven't actually
written the IAR backup code yet.
Also clean out the excess table from ourSims, since it is no longer
needed to find the sim we used to use for IARs.
-rw-r--r-- | src/.sledjChisl.conf.lua | 1 | ||||
-rw-r--r-- | src/sledjchisl/sledjchisl.c | 80 |
2 files changed, 20 insertions, 61 deletions
diff --git a/src/.sledjChisl.conf.lua b/src/.sledjChisl.conf.lua index d6fad37..f24e6ed 100644 --- a/src/.sledjChisl.conf.lua +++ b/src/.sledjChisl.conf.lua | |||
@@ -19,6 +19,7 @@ config = | |||
19 | ["loadAverageInc"] = 0.7; | 19 | ["loadAverageInc"] = 0.7; |
20 | ["simTimeOut"] = 45; -- seconds | 20 | ["simTimeOut"] = 45; -- seconds |
21 | ["bulkSims"] = 0; -- 0 means figure it out from number of CPUs. | 21 | ["bulkSims"] = 0; -- 0 means figure it out from number of CPUs. |
22 | ["backupIARsim"] = "Sandbox"; | ||
22 | ["webRoot"] = "/var/www/html"; | 23 | ["webRoot"] = "/var/www/html"; |
23 | ["webHost"] = "localhost"; | 24 | ["webHost"] = "localhost"; |
24 | ["URL"] = "sledjchisl.fcgi"; | 25 | ["URL"] = "sledjchisl.fcgi"; |
diff --git a/src/sledjchisl/sledjchisl.c b/src/sledjchisl/sledjchisl.c index 8aad370..767a894 100644 --- a/src/sledjchisl/sledjchisl.c +++ b/src/sledjchisl/sledjchisl.c | |||
@@ -484,6 +484,7 @@ char *Tconsole = "SledjChisl"; | |||
484 | char *Tsocket = "opensim-tmux.socket"; | 484 | char *Tsocket = "opensim-tmux.socket"; |
485 | char *Ttab = "SC"; | 485 | char *Ttab = "SC"; |
486 | char *Tcmd = "tmux -S"; | 486 | char *Tcmd = "tmux -S"; |
487 | char *backupIARsim = "Sandbox"; | ||
487 | char *webRoot = "/var/www/html"; | 488 | char *webRoot = "/var/www/html"; |
488 | char *URL = "fcgi-bin/sledjchisl.fcgi"; | 489 | char *URL = "fcgi-bin/sledjchisl.fcgi"; |
489 | char *ToS = "Be good."; | 490 | char *ToS = "Be good."; |
@@ -731,7 +732,7 @@ struct _simList | |||
731 | { | 732 | { |
732 | int len, num; | 733 | int len, num; |
733 | char **sims; | 734 | char **sims; |
734 | qtreetbl_t *tbl, *byTab; | 735 | qtreetbl_t *byTab; |
735 | }; | 736 | }; |
736 | simList *ourSims = NULL; | 737 | simList *ourSims = NULL; |
737 | 738 | ||
@@ -810,7 +811,6 @@ simList *getSims() | |||
810 | ourSims = xmalloc(sizeof(simList)); | 811 | ourSims = xmalloc(sizeof(simList)); |
811 | memset(ourSims, 0, sizeof(simList)); | 812 | memset(ourSims, 0, sizeof(simList)); |
812 | 813 | ||
813 | ourSims->tbl = qtreetbl(0); | ||
814 | ourSims->byTab = qtreetbl(0); | 814 | ourSims->byTab = qtreetbl(0); |
815 | new->extra = (long) ourSims; | 815 | new->extra = (long) ourSims; |
816 | dirtree_handle_callback(new, filterSims); | 816 | dirtree_handle_callback(new, filterSims); |
@@ -875,7 +875,6 @@ ini->putstr(ini, "INI FILE", name); | |||
875 | simd->sizeZ = getIntFromIni(ini, "Region.SizeZ"); | 875 | simd->sizeZ = getIntFromIni(ini, "Region.SizeZ"); |
876 | simd->tab = name; | 876 | simd->tab = name; |
877 | ini->put(ini, "SIM DATA", simd, sizeof(simData)); | 877 | ini->put(ini, "SIM DATA", simd, sizeof(simData)); |
878 | ourSims->tbl->put(ourSims->tbl, sim, ini, sizeof(qlisttbl_t)); | ||
879 | ourSims->byTab->put(ourSims->byTab, name, ini, sizeof(qlisttbl_t)); | 878 | ourSims->byTab->put(ourSims->byTab, name, ini, sizeof(qlisttbl_t)); |
880 | 879 | ||
881 | if ((!qfile_exist(newPath))) | 880 | if ((!qfile_exist(newPath))) |
@@ -955,8 +954,8 @@ void freeSimList(simList *sims) | |||
955 | 954 | ||
956 | qtreetbl_obj_t obj; | 955 | qtreetbl_obj_t obj; |
957 | memset((void*) &obj, 0, sizeof(obj)); // start from the minimum. | 956 | memset((void*) &obj, 0, sizeof(obj)); // start from the minimum. |
958 | sims->tbl->lock(sims->tbl); | 957 | sims->byTab->lock(sims->byTab); |
959 | while (sims->tbl->getnext(sims->tbl, &obj, false) == true) | 958 | while (sims->byTab->getnext(sims->byTab, &obj, false) == true) |
960 | { | 959 | { |
961 | char *name = qmemdup(obj.name, obj.namesize); // keep the name | 960 | char *name = qmemdup(obj.name, obj.namesize); // keep the name |
962 | size_t namesize = obj.namesize; // for removal argument | 961 | size_t namesize = obj.namesize; // for removal argument |
@@ -983,30 +982,6 @@ void freeSimList(simList *sims) | |||
983 | ; | 982 | ; |
984 | } | 983 | } |
985 | 984 | ||
986 | sims->tbl->remove_by_obj(sims->tbl, obj.name, obj.namesize); // remove | ||
987 | obj = sims->tbl->find_nearest(sims->tbl, name, namesize, false); // rewind one step back | ||
988 | free(name); // clean up | ||
989 | } | ||
990 | sims->tbl->unlock(sims->tbl); | ||
991 | sims->tbl->free(sims->tbl); | ||
992 | |||
993 | memset((void*) &obj, 0, sizeof(obj)); // start from the minimum. | ||
994 | sims->byTab->lock(sims->byTab); | ||
995 | while (sims->byTab->getnext(sims->byTab, &obj, false) == true) | ||
996 | { | ||
997 | char *name = qmemdup(obj.name, obj.namesize); // keep the name | ||
998 | size_t namesize = obj.namesize; // for removal argument | ||
999 | qlisttbl_t *ini = (qlisttbl_t *) obj.data; | ||
1000 | if (NULL != ini) | ||
1001 | { | ||
1002 | // TODO - this leaks memory, but it's a bug in qLibc. Send the bug fix upstream. | ||
1003 | // It either leaks, or frees twice. Pffft | ||
1004 | // ini->clear(ini); | ||
1005 | // ini->free(ini); | ||
1006 | // free(ini); | ||
1007 | ; | ||
1008 | } | ||
1009 | |||
1010 | sims->byTab->remove_by_obj(sims->byTab, obj.name, obj.namesize); // remove | 985 | sims->byTab->remove_by_obj(sims->byTab, obj.name, obj.namesize); // remove |
1011 | obj = sims->byTab->find_nearest(sims->byTab, name, namesize, false); // rewind one step back | 986 | obj = sims->byTab->find_nearest(sims->byTab, name, namesize, false); // rewind one step back |
1012 | free(name); // clean up | 987 | free(name); // clean up |
@@ -4467,42 +4442,24 @@ notWritten: | |||
4467 | sysinfo(&info); | 4442 | sysinfo(&info); |
4468 | la = info.loads[0]/65536.0; | 4443 | la = info.loads[0]/65536.0; |
4469 | 4444 | ||
4470 | for (i = 0; i < ourSims->num; i++) | 4445 | char *name; |
4471 | { | 4446 | simData *simd = ourSims->byTab->get(ourSims->byTab, backupIARsim, NULL, false); |
4472 | char *sim = ourSims->sims[i], *name;// = getSimName(ourSims->sims[i], &nm, &num); | ||
4473 | |||
4474 | qlisttbl_t *ini = ourSims->tbl->get(ourSims->tbl, sim, NULL, false); | ||
4475 | if (NULL == ini) | ||
4476 | { | ||
4477 | E("Sim %s not found in ini list!", sim); | ||
4478 | // name = getSimName(ourSims->sims[i], &nm, &num); | ||
4479 | } | ||
4480 | else | ||
4481 | name = qstrunchar(ini->getstr(ini, "Region.RegionName", false), '"', '"'); | ||
4482 | 4447 | ||
4448 | if (NULL == simd) | ||
4449 | E("Sim %s not found in ini list! Can't create inventory for %s %s", backupIARsim, first, last); | ||
4450 | else | ||
4451 | name = simd->name; | ||
4483 | 4452 | ||
4453 | if (checkSimIsRunning(backupIARsim)) | ||
4454 | { | ||
4455 | char *cmd = xmprintf("%d.%d", simd->window, simd->pane); | ||
4456 | char *c = xmprintf("load iar -m %s %s / password /opt/opensim_SC/backups/DefaultMember.IAR", first, last); | ||
4484 | 4457 | ||
4485 | if (checkSimIsRunning(sim)) | 4458 | I("Loading default member IAR for %s %s in sim %s, this might take a couple of minutes.", first, last, name); |
4486 | { | ||
4487 | I("Loading default member IAR for %s %s in sim %s, this might take a couple of minutes.", first, last, name); | ||
4488 | char *c = xmprintf("%s %s/%s send-keys -t '%s:%d' 'load iar -m %s %s / password /opt/opensim_SC/backups/DefaultMember.IAR' Enter", | ||
4489 | Tcmd, scRun, Tsocket, Tconsole, i + 1, first, last); | ||
4490 | T(c); | 4459 | T(c); |
4491 | int r = system(c); | 4460 | sendTmuxCmd(cmd, c); |
4492 | if (!WIFEXITED(r)) | 4461 | free(cmd); |
4493 | E("tmux load iar command failed!"); | 4462 | free(c); |
4494 | else | ||
4495 | { | ||
4496 | // snprintf(toybuf, sizeof(toybuf), "INITIALIZATION COMPLETE FOR %s", name); | ||
4497 | // waitTmuxText(name, toybuf); | ||
4498 | // I("%s is done starting up.", name); | ||
4499 | // la = waitLoadAverage(la, loadAverageInc, simTimeOut); | ||
4500 | } | ||
4501 | free(c); | ||
4502 | free(name); | ||
4503 | break; | ||
4504 | } | ||
4505 | free(name); | ||
4506 | } | 4463 | } |
4507 | } | 4464 | } |
4508 | free(first); | 4465 | free(first); |
@@ -6987,6 +6944,7 @@ jit library is loaded or the JIT compiler will not be activated. | |||
6987 | if ((tmp = configs->getstr(configs, "Tconsole", false)) != NULL) {Tconsole = tmp; D("Setting Tconsole = %s", Tconsole);} | 6944 | if ((tmp = configs->getstr(configs, "Tconsole", false)) != NULL) {Tconsole = tmp; D("Setting Tconsole = %s", Tconsole);} |
6988 | if ((tmp = configs->getstr(configs, "Tsocket", false)) != NULL) {Tsocket = tmp; D("Setting Tsocket = %s", Tsocket);} | 6945 | if ((tmp = configs->getstr(configs, "Tsocket", false)) != NULL) {Tsocket = tmp; D("Setting Tsocket = %s", Tsocket);} |
6989 | if ((tmp = configs->getstr(configs, "Ttab", false)) != NULL) {Ttab = tmp; D("Setting Ttab = %s", Ttab);} | 6946 | if ((tmp = configs->getstr(configs, "Ttab", false)) != NULL) {Ttab = tmp; D("Setting Ttab = %s", Ttab);} |
6947 | if ((tmp = configs->getstr(configs, "backupIARsim", false)) != NULL) {backupIARsim = tmp; D("Setting backupIARsim = %s", backupIARsim);} | ||
6990 | if ((tmp = configs->getstr(configs, "webRoot", false)) != NULL) {webRoot = tmp; D("Setting webRoot = %s", webRoot);} | 6948 | if ((tmp = configs->getstr(configs, "webRoot", false)) != NULL) {webRoot = tmp; D("Setting webRoot = %s", webRoot);} |
6991 | if ((tmp = configs->getstr(configs, "URL", false)) != NULL) {URL = tmp; D("Setting URL = %s", URL);} | 6949 | if ((tmp = configs->getstr(configs, "URL", false)) != NULL) {URL = tmp; D("Setting URL = %s", URL);} |
6992 | if ((vd = configs->get (configs, "seshRenew", NULL, false)) != NULL) {seshRenew = (int) *((float *) vd); D("Setting seshRenew = %d", seshRenew);} | 6950 | if ((vd = configs->get (configs, "seshRenew", NULL, false)) != NULL) {seshRenew = (int) *((float *) vd); D("Setting seshRenew = %d", seshRenew);} |