ING_DB
This commit is contained in:
parent
8e900dedd8
commit
263bea5a80
|
|
@ -0,0 +1,78 @@
|
|||
# include "AA_liba.h"
|
||||
|
||||
static char *AAERR[] =
|
||||
{
|
||||
"OPEN", /* 0 */
|
||||
"CLOSE", /* 1 */
|
||||
"APPEND", /* 2 */
|
||||
"DELETE", /* 3 */
|
||||
"DELETE.AAgetequal", /* 4 */
|
||||
"REPLACE", /* 5 */
|
||||
"REPLACE.AAgetequal", /* 6 */
|
||||
"REPLACE.delete", /* 7 */
|
||||
"FIND.isam", /* 8 */
|
||||
"FIND.lisam", /* 9 */
|
||||
"FIND.hisam", /* 10 */
|
||||
"GET.getup", /* 11 */
|
||||
"GET.getid", /* 12 */
|
||||
"SETKEY.dom", /* 13 */
|
||||
"SETKEY.cond", /* 14 */
|
||||
"request", /* 15 */
|
||||
"release", /* 16 */
|
||||
"lock", /* 17 */
|
||||
"unlock", /* 18 */
|
||||
"get: not locked", /* 19 */
|
||||
"append: not locked", /* 20 */
|
||||
"delete: not locked", /* 21 */
|
||||
"replace: not locked", /* 22 */
|
||||
"release: not locked", /* 23 */
|
||||
"refresh", /* 24 */
|
||||
"GET.get", /* 25 */
|
||||
};
|
||||
|
||||
static char *AAERR100[] =
|
||||
{
|
||||
"not available", /* 100 */
|
||||
"already open", /* 101 */
|
||||
"not enough memory", /* 102 */
|
||||
"has integrities", /* 103 */
|
||||
"has protections", /* 104 */
|
||||
"view", /* 105 */
|
||||
"not open", /* 106 */
|
||||
"concurrency confusion", /* 107 */
|
||||
"relation outside in use", /* 108 */
|
||||
"TA", /* 109 */
|
||||
"permission denied", /* 110 */
|
||||
"database lost", /* 111 */
|
||||
};
|
||||
|
||||
AAerror(err, msg)
|
||||
register int err;
|
||||
register char *msg;
|
||||
{
|
||||
extern int errno;
|
||||
extern int AAccerror;
|
||||
|
||||
printf("\n\007AMXERR:\t* * * * * * *\t%d\n", err);
|
||||
printf("\tBS\tpid\t%d\n", getpid());
|
||||
if (errno)
|
||||
printf("\tBS\terror\t%d\n", errno);
|
||||
if (AAccerror)
|
||||
printf("\tACCESS\terror\t%d\n", AAccerror);
|
||||
|
||||
if (err < 100)
|
||||
{
|
||||
printf("\tAMX-RC\t\t%d\n", AA);
|
||||
# ifdef MSDOS
|
||||
printf("bad %s: relation `%.10s'\n",
|
||||
# else
|
||||
printf("bad %s: relation `%.14s'\n",
|
||||
# endif
|
||||
AAERR[err], msg);
|
||||
}
|
||||
else
|
||||
printf("`%s': %s\n", msg, AAERR100[err -100]);
|
||||
|
||||
fflush(stdout);
|
||||
exit(1);
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
# include "AA_liba.h"
|
||||
|
||||
|
||||
AArequest(d, rel)
|
||||
register DESCXX *d;
|
||||
register char *rel;
|
||||
{
|
||||
# ifdef AMX_TRACE
|
||||
AAtTfp(11, 0,
|
||||
# ifdef MSDOS
|
||||
"retrieve\t`%.10s'\n",
|
||||
# else
|
||||
"retrieve\t`%.14s'\n",
|
||||
# endif
|
||||
rel);
|
||||
# endif
|
||||
|
||||
errno = 0;
|
||||
if (!d)
|
||||
AAerror(106, rel);
|
||||
|
||||
if (AA_NOLOCKS)
|
||||
return;
|
||||
|
||||
do AAmark(d); while (d = d->xx_index);
|
||||
}
|
||||
|
||||
|
||||
static AAmark(d)
|
||||
register DESCXX *d;
|
||||
{
|
||||
# ifdef AMX_TRACE
|
||||
AAtTfp(29, 0,
|
||||
# ifdef MSDOS
|
||||
"lock\t\t`%.10s' (%d) mod 0%o\n",
|
||||
# else
|
||||
"lock\t\t`%.14s' (%d) mod 0%o\n",
|
||||
# endif
|
||||
d->xx_desc.reldum.relid, d->xx_locks, M_SHARE);
|
||||
# endif
|
||||
|
||||
if (d->xx_locks++)
|
||||
return;
|
||||
|
||||
AA = 0;
|
||||
if (AA_TA || AAsetrll(A_SLP, d->xx_desc.reltid, AA = M_SHARE) < 0)
|
||||
AAerror(15, d->xx_desc.reldum.relid);
|
||||
AA_LOCKS++;
|
||||
d->xx_refresh = 0;
|
||||
d->xx_excl = M_SHARE;
|
||||
}
|
||||
|
||||
|
||||
AArelease(d)
|
||||
register DESCXX *d;
|
||||
{
|
||||
# ifdef AMX_TRACE
|
||||
AAtTfp(12, 0,
|
||||
# ifdef MSDOS
|
||||
"end retrieve\t`%.10s'\n",
|
||||
# else
|
||||
"end retrieve\t`%.14s'\n",
|
||||
# endif
|
||||
d->xx_desc.reldum.relid);
|
||||
# endif
|
||||
|
||||
if (AA_NOLOCKS)
|
||||
return;
|
||||
|
||||
do AAfree(d); while (d = d->xx_index);
|
||||
}
|
||||
|
||||
|
||||
static AAfree(d)
|
||||
register DESCXX *d;
|
||||
{
|
||||
# ifdef AMX_TRACE
|
||||
AAtTfp(30, 0,
|
||||
# ifdef MSDOS
|
||||
"unlock\t\t`%.10s' (%d)\n",
|
||||
# else
|
||||
"unlock\t\t`%.14s' (%d)\n",
|
||||
# endif
|
||||
d->xx_desc.reldum.relid, d->xx_locks);
|
||||
# endif
|
||||
|
||||
if (d->xx_locks <= 0)
|
||||
AAerror(23, d->xx_desc.reldum.relid);
|
||||
|
||||
if (--d->xx_locks)
|
||||
return;
|
||||
|
||||
AAnoclose(d);
|
||||
AA = 0;
|
||||
if (AA_TA || (AA = AAunlrl(d->xx_desc.reltid)) < 0)
|
||||
AAerror(16, d->xx_desc.reldum.relid);
|
||||
|
||||
d->xx_refresh = 0;
|
||||
d->xx_excl = 0;
|
||||
--AA_LOCKS;
|
||||
}
|
||||
Loading…
Reference in New Issue