version 1.4, 2025/03/22 18:43:54
|
version 1.7, 2025/04/13 15:12:21
|
Line 24
|
Line 24
|
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* |
* |
* $Log$ |
* $Log$ |
|
* Revision 1.7 2025/04/13 15:12:21 snw |
|
* Fix transaction checkpoints on OS/2 [CLOSES #34] |
|
* |
|
* Revision 1.6 2025/04/13 04:22:43 snw |
|
* Fix snprintf calls |
|
* |
|
* Revision 1.5 2025/04/09 19:52:02 snw |
|
* Eliminate as many warnings as possible while building with -Wall |
|
* |
* Revision 1.4 2025/03/22 18:43:54 snw |
* Revision 1.4 2025/03/22 18:43:54 snw |
* Make STRLEN 255 chars and add BIGSTR macro for larger buffers |
* Make STRLEN 255 chars and add BIGSTR macro for larger buffers |
* |
* |
Line 44
|
Line 53
|
#include "journal.h" |
#include "journal.h" |
#include "fs.h" |
#include "fs.h" |
|
|
|
#if defined(__OS2__) |
|
# include <os2.h> |
|
#endif |
|
|
short frm_global_exists(char *, char *, char *); |
short frm_global_exists(char *, char *, char *); |
|
|
cptab *cptab_head[TP_MAX_NEST]; |
cptab *cptab_head[TP_MAX_NEST]; |
Line 51 cptab *cptab_head[TP_MAX_NEST];
|
Line 64 cptab *cptab_head[TP_MAX_NEST];
|
cptab *cptab_insert(int tlevel, char *global) |
cptab *cptab_insert(int tlevel, char *global) |
{ |
{ |
cptab *t; |
cptab *t; |
char mode; |
|
|
|
short g_exists; |
short g_exists; |
|
|
char *gc_ns; |
char *gc_ns; |
char *gc_pth; |
char *gc_pth; |
|
|
Line 93 cptab *cptab_insert(int tlevel, char *gl
|
Line 103 cptab *cptab_insert(int tlevel, char *gl
|
strcpy (t->file, gc_pth); |
strcpy (t->file, gc_pth); |
stcnv_m2c (t->file); |
stcnv_m2c (t->file); |
|
|
snprintf (t->cp_file, PATHLEN, "%s.%d.%d.chk", t->file, pid, tp_level); |
snprintf (t->cp_file, PATHLEN - 1, "%s.%d.%d.chk", t->file, pid, tp_level); |
|
|
free (gc_ns); |
free (gc_ns); |
free (gc_pth); |
free (gc_pth); |
Line 173 void cptab_postcommit(int tlevel)
|
Line 183 void cptab_postcommit(int tlevel)
|
{ |
{ |
cptab *t; |
cptab *t; |
/*char *cmd;*/ |
/*char *cmd;*/ |
int rc; |
|
|
|
/* |
/* |
cmd = (char *) malloc (STRLEN * sizeof (char)); |
cmd = (char *) malloc (STRLEN * sizeof (char)); |
Line 198 void cptab_postcommit(int tlevel)
|
Line 207 void cptab_postcommit(int tlevel)
|
short cptab_rollback(int tlevel) |
short cptab_rollback(int tlevel) |
{ |
{ |
cptab *t; |
cptab *t; |
/*char *cmd;*/ |
|
int rc; |
int rc; |
|
|
/* |
|
cmd = (char *) malloc (STRLEN * sizeof (char)); |
|
NULLPTRCHK(cmd,"cptab_rollback"); |
|
*/ |
|
|
|
for (t = cptab_head[tlevel]; t != NULL; t = t->next) { |
for (t = cptab_head[tlevel]; t != NULL; t = t->next) { |
|
|
switch (t->mode) { |
switch (t->mode) { |
|
|
case CP_REMOVE: |
case CP_REMOVE: |
unlink (t->file); |
unlink (t->file); |
/* |
|
snprintf (cmd, STRLEN - 1, "/bin/rm -f '%s'", t->file); |
|
rc = system (cmd); |
|
*/ |
|
break; |
break; |
|
|
case CP_RESTORE: |
case CP_RESTORE: |
/* |
#if !defined(__OS2__) |
snprintf (cmd, STRLEN - 1, "/bin/cp '%s' '%s'", t->cp_file, t->file); |
|
rc = system (cmd); |
|
*/ |
|
rc = cp (t->file, t->cp_file); |
rc = cp (t->file, t->cp_file); |
|
#else |
|
rc = DosCopy (t->cp_file, t->file, 1); |
|
#endif |
if (rc != 0) { |
if (rc != 0) { |
cptab_head[tlevel] = NULL; |
cptab_head[tlevel] = NULL; |
/*free (cmd);*/ |
/*free (cmd);*/ |
return FALSE; |
return FALSE; |
} |
} |
|
|
/* |
|
snprintf (cmd, STRLEN - 1, "/bin/rm -f %s", t->cp_file); |
|
rc = system (cmd); |
|
*/ |
|
|
|
unlink (t->cp_file); |
unlink (t->cp_file); |
if (rc != 0) { |
if (rc != 0) { |
cptab_head[tlevel] = NULL; |
cptab_head[tlevel] = NULL; |