16 #include <sys/types.h> 22 #define MAXINT INT_MAX 23 #define MAXLONG LONG_MAX 26 #define MAXLONG LONG_MAX 48 #define minARTN(x) ((x) > ARTNLEN ? ARTNLEN : (x)) 50 #define eqan(a,b) (strncmp ((a), (b), ARTNLEN) == 0) 51 #define neqan(a,b) (!eqan(a,b)) 163 if ((cnomf[0] ==
'-') && (cnomf[1] ==
'\0'))
166 fp = fopen (cnomf,
"w");
168 else if (strcmp (cstto,
"NEW") == 0)
170 fp = fopen (cnomf,
"r");
177 fp = fopen (cnomf,
"w+");
179 else if (strcmp (cstto,
"OLD") == 0)
181 fp = fopen (cnomf,
"r+");
183 fp = fopen (cnomf,
"r");
187 fp = fopen (cnomf,
"r+");
189 fp = fopen (cnomf,
"w+");
191 fp = fopen (cnomf,
"r");
211 fh->fd = fileno (fp);
215 fh->buf = (
char *)malloc (
buf_sz);
216 setvbuf (fh->fp, fh->buf, _IOFBF,
buf_sz);
228 *KREP = fclose (fh->fp);
230 free ((
void *)fh->buf);
238 lfi_abor (
"Cannot fseek unit %lld, `%s'", fh->inumer, fh->cnomf);
242 fh->offset = lseek (fh->fd, pos, whence);
246 if (fseek (fh->fp, pos, whence) == 0)
247 fh->offset = ftell (fh->fp);
265 memset (st, 0,
sizeof (
struct stat));
273 char * _ptr = (
char *)ptr;
276 lfi_abor (
"Cannot fseek unit %lld, `%s'", fh->inumer, fh->cnomf);
280 if (fh->offset != pos)
281 if (
fh_seek (fh, pos, SEEK_SET) < 0)
282 lfi_abor (
"Cannot fseek unit %lld, `%s'", fh->inumer, fh->cnomf);
287 ? read (fh->fd, &_ptr[len-lenr], lenr)
288 : fread (&_ptr[len-lenr], 1, lenr, fh->fp);
295 lfi_abor (
"Reading %lld bytes at offset %lld, from unit %lld failed",
296 len, pos, fh->inumer);
300 if (fh->lswap && lswap)
302 int t = 8,
n = len / 8;
315 if (fh->offset != pos)
316 lfi_abor (
"Cannot fseek unit %lld, `%s'", fh->inumer, fh->cnomf);
323 if (fh->lswap && lswap)
325 int t = 8,
n = len / 8;
326 _ptr = (
char *)malloc (len);
334 if (fh->offset != pos)
335 if (
fh_seek (fh, pos, SEEK_SET) < 0)
336 lfi_abor (
"Cannot fseek unit %lld, `%s'", fh->inumer, fh->cnomf);
341 ? write (fh->fd, &_ptr[len-lenw], lenw)
342 : fwrite (&_ptr[len-lenw], 1, lenw, fh->fp);
349 lfi_abor (
"Writing %lld bytes at offset %lld, in unit %lld failed",
350 len, pos, fh->inumer);
354 if (fh->lswap && lswap)
361 time_t
T = time (NULL);
366 *YYYYMMDD = (1900 + TM.tm_year) * 10000 + (1 + TM.tm_mon) * 100 + TM.tm_mday;
367 *HHmmss = TM.tm_hour * 10000 + TM.tm_min * 100 + TM.tm_sec;
376 int isize = fh->hdr->size;
377 int ioffib = isize / 8 - fh->hdr->illdo;
388 fh->hdr->iddmg = YYYYMMDD;
389 fh->hdr->ihdmg = HHmmss;
393 fh_write (fh, &fh->hdr->ilpar, 0*isize, isize, 1);
397 fh->hdr->ilnal = +MAXLONG;
402 for (iartx = 0, iidx = 0; ; iidx++)
404 integer64 offsetx = iidx ? (fh->hdr->ioffi[ioffib-iidx]-1) * isize : isize;
409 for (iart = 0; iart < isize / ARTNLEN; iart++, iartx++)
413 isect3[iart*2] = fh->idx[iartx].len;
414 isect3[iart*2+1] = fh->idx[iartx].pos;
415 memcpy (&csect2[iart*ARTNLEN], fh->idx[iartx].name, ARTNLEN);
419 if (fh->idx[iartx].len < fh->hdr->ilnal)
420 fh->hdr->ilnal = fh->idx[iartx].len;
421 if (fh->idx[iartx].len > fh->hdr->ilxal)
422 fh->hdr->ilxal = fh->idx[iartx].len;
426 fh_write (fh, csect2, offsetx, isize, 0);
427 fh_write (fh, isect3, offsetx + isize, isize, 1);
431 fh_write (fh, &fh->hdr->ilpar, 0*isize, isize, 1);
454 if ((sz =
fh_seek (fh, 0, SEEK_END)) < 0)
455 lfi_abor (
"Cannot fseek unit %lld, `%s'", fh->inumer, fh->cnomf);
458 if ((nr = sz % fh->hdr->size) != 0)
461 char * buf = (
char *)malloc (nw);
495 if (strncmp (als->cmagic,
"lfi_alts", 8))
504 for (fh = als->fh; fh; fh = fh->next)
505 if (fh->inumer == *KNUMER)
508 lfi_abor (
"File number `%lld' is not opened", *KNUMER);
516 return len > ARTNLEN ? 0 : 1;
525 len = minARTN (CDNOMA_len);
540 memset (_name,
' ', ARTNLEN);
541 memcpy (_name, name, minARTN (name_len));
547 int iart1 = fh->iart-da > 0 ? fh->iart-da : 0;
548 int iart2 = fh->iart+da < fh->nart ? fh->iart+da : fh->nart;
549 for (iart = iart1; iart < iart2; iart++)
550 if (eqan (_name, fh->idx[iart].name))
554 for (iart = 0; iart < fh->nart; iart++)
555 if (eqan (_name, fh->idx[iart].name))
566 d = d >= 0 ? +1 : -1;
568 if ((d < 0) && (iart < 0))
574 if ((iart >= fh->nart) || (iart < 0))
576 if (eqan (fh->idx[iart].name,
fin_d_index) && (d > 0))
592 int ioffib = fh->hdr->size / 8 - fh->hdr->illdo;
593 int nart = fh->nart + fh->hdr->size / ARTNLEN + 1;
601 for (iidx = 0; fh->hdr->ioffi[ioffib-1-iidx]; iidx++);
602 if (ioffib-1-iidx == fh->hdr->illdo)
612 for (iart = fh->nart; iart < nart; iart++)
614 fh->idx[iart].len = 0;
615 fh->idx[iart].pos = 0;
624 iart_idx = fh->nart + 1;
628 fh->idx[iart_idx].len = 2 * fh->hdr->size / 8;
629 pos = fh->idx[iart_idx-2].pos + fh->idx[iart_idx-2].len + alen;
631 pose = (pos-1) % (fh->hdr->size / 8);
634 pos += (fh->hdr->size / 8) - pose;
636 fh->idx[iart_idx].pos = pos;
638 memcpy (fh->idx[iart_idx].name,
page__index, ARTNLEN);
642 if (ioffib-1-iidx < 0)
643 lfi_abor (
"Internal error: index is full");
645 fh->hdr->ioffi[ioffib-1-iidx] = 1 + ((pos-1) * 8) / fh->hdr->size;
653 lfi_alts_t * als = lookup_als (LFI); 654 #define FH_DECL(fatal) \ 655 lfi_alts_fh_t * fh = lookup_fh (als, KNUMER, fatal); 657 int iart = lookup_rc (fh, CDNOMA, CDNOMA_len); 665 char * cnomf, * cstto;
672 DRHOOK_START (
"lfiouv_alts_ext");
680 if (! istrue (*LDNOMM))
683 lfi_abor (
"LDNOMM=T is not compatible with KNUMER<=0");
684 CDNOMF_len = sprintf (CLNOMF,
"fort.%lld", *
KNUMER);
692 memset (fh, 0,
sizeof (*fh));
710 for (fh = als->fh; fh; fh = fh->next)
711 if (fh->inumer == inumer)
722 fh->inimes = *KNIMES;
723 fh->llerfa = *LDERFA;
730 fh->fmult = als->fmult;
735 clendi = getenv (
"LFI_BYTE_ORDER");
738 if (clendi && strcmp (clendi,
"LITTLE_ENDIAN") == 0)
740 else if (clendi && strcmp (clendi,
"BIG_ENDIAN") == 0)
742 else if (clendi && strcmp (clendi,
"NATIVE_ENDIAN") == 0)
747 fh->lswap = iislen != llrqle;
751 old = st.st_size > 0;
757 DRHOOK_START (
"lfiouv_alts_ext:read1");
758 fh_read (fh, i_lfi_s1_2, 0, 16, 0);
760 i_lfi_s1_1 = i_lfi_s1_2[0];
761 fh->lswap = i_lfi_s1_2[1] > 128;
765 jswap_ (&i_lfi_s1_1, &i_lfi_s1_1, &t, &
n);
767 fh->fmult = i_lfi_s1_1 / 512;
770 isize =
sizeof (
integer64) * 512 * fh->fmult;
772 fh->nart = isize / ARTNLEN;
774 fh->hdr->size = isize;
782 int iidx, iidy,
nidx;
786 DRHOOK_START (
"lfiouv_alts_ext:read");
788 fh_read (fh, &fh->hdr->ilpar, 0*isize, isize, 1);
792 ioffib = isize / 8 - fh->hdr->illdo;
794 for (nidx = 0; fh->hdr->ioffi[ioffib-1-
nidx]; nidx++);
798 fh->nart = (isize / ARTNLEN) * (nidx + 1) +
nidx;
805 for (iart = 0, iidx = 0, iidy = 1; iidx < nidx + 1; iidx++)
807 integer64 offsetx = iidx ? (fh->hdr->ioffi[ioffib-iidx]-1) * isize : isize;
810 fh_read (fh, csect2, offsetx + 0, isize, 0);
811 fh_read (fh, isect3, offsetx + isize, isize, 1);
813 for (iartx = 0; iartx < isize / ARTNLEN; iartx++, iart++)
816 pos = isect3[iartx*2+1];
820 if (fh->hdr->ioffi[ioffib-iidy])
823 while ((ioffi = fh->hdr->ioffi[ioffib-iidy]))
826 if ((pos-1)*8 < offsety)
828 fh->idx[iart].len = 2 * isize / 8;
829 fh->idx[iart].pos = 1 + offsety / 8;
836 fh->idx[iart].len = len;
837 fh->idx[iart].pos = pos;
838 memcpy (fh->idx[iart].name, &csect2[iartx*ARTNLEN], ARTNLEN);
844 for (iart = fh->nart-1; iart >= 0; iart--)
862 memset (&fh->hdr->ilpar, 0, fh->hdr->size);
863 for (iart = 0; iart < fh->nart; iart++)
865 fh->idx[iart].len = 0;
866 fh->idx[iart].pos = 0;
870 fh->hdr->ilpar = isize / 8;
871 fh->hdr->ixapi = isize / 16;
872 fh->hdr->ilmna = ARTNLEN;
875 fh->hdr->idcre = YYYYMMDD;
876 fh->hdr->iddmg = YYYYMMDD;
877 fh->hdr->idmng = YYYYMMDD;
878 fh->hdr->ihcre = HHmmss;
879 fh->hdr->ihdmg = HHmmss;
880 fh->hdr->ihmng = HHmmss;
891 *KNBARI = fh->hdr->inalo - fh->hdr->intru;
893 if (fh->hdr->ifeam != 0)
905 DRHOOK_START (
"lfiouv_alts");
914 DRHOOK_START (
"lfifer_alts");
920 for (fh = als->fh, fg = NULL; fh; fg = fh, fh = fh->next)
921 if (fh->inumer == *
KNUMER)
960 DRHOOK_START (
"lfinum_alts");
962 *KRANG = fh == NULL ? 0 : 1;
972 DRHOOK_START (
"lfinfo_alts");
983 *KLONG = fh->idx[iart].len;
984 *KPOSEX = fh->idx[iart].pos;
996 DRHOOK_START (
"lfilec_alts");
1013 integer64 len = fh->idx[iart].len > *KLONG ? *KLONG : fh->idx[iart].len;
1016 fh_read (fh, KTAB, (pos-1) * 8, len * 8, 1);
1018 if (*KLONG < fh->idx[iart].len)
1037 DRHOOK_START (
"lfilas_alts");
1046 integer64 len = fh->idx[iart].len > *KLONG ? *KLONG : fh->idx[iart].len;
1049 fh_read (fh, KTAB, (pos-1) * 8, len * 8, 1);
1053 if (*KLONG < fh->idx[iart].len)
1059 memset (
CDNOMA,
' ', CDNOMA_len);
1060 memcpy (
CDNOMA, fh->idx[iart].name, minARTN (CDNOMA_len));
1062 if (CDNOMA_len <
lfi_fstrlen (fh->idx[iart].name, ARTNLEN))
1080 DRHOOK_START (
"lfilap_alts");
1089 integer64 len = fh->idx[iart].len > *KLONG ? *KLONG : fh->idx[iart].len;
1092 fh_read (fh, KTAB, (pos-1) * 8, len * 8, 1);
1096 if (*KLONG < fh->idx[iart].len)
1102 memset (
CDNOMA,
' ', CDNOMA_len);
1103 memcpy (
CDNOMA, fh->idx[iart].name, minARTN (CDNOMA_len));
1105 if (CDNOMA_len <
lfi_fstrlen (fh->idx[iart].name, ARTNLEN))
1123 DRHOOK_START (
"lficas_alts");
1126 memset (
CDNOMA,
' ', CDNOMA_len);
1135 *KLONG = fh->idx[iart].len;
1136 *KPOSEX = fh->idx[iart].pos;
1138 memcpy (
CDNOMA, fh->idx[iart].name, minARTN (CDNOMA_len));
1140 if (CDNOMA_len <
lfi_fstrlen (fh->idx[iart].name, ARTNLEN))
1146 if (istrue (*LDAVAN))
1157 DRHOOK_START (
"lfipos_alts");
1171 DRHOOK_START (
"lficap_alts");
1174 memset (
CDNOMA,
' ', CDNOMA_len);
1183 *KLONG = fh->idx[iart].len;
1184 *KPOSEX = fh->idx[iart].pos;
1186 if (CDNOMA_len <
lfi_fstrlen (fh->idx[iart].name, ARTNLEN))
1192 if (istrue (*LDRECU))
1206 DRHOOK_START (
"lfilaf_alts");
1210 for (iart = 0; iart < fh->nart; iart++)
1219 " =====> %7lld-eme TROU repertorie dans l'index, longueur reutilisable: %6lld mots, position %8lld a %8lld",
1220 itrou++, fh->idx[iart].len, fh->idx[iart].pos, fh->idx[iart].pos + fh->idx[iart].len-1);
1225 "%7lld-eme article de donnees: \"%16.16s\", %6lld mots, position %8lld a %8lld",
1226 idonn++, fh->idx[iart].name, fh->idx[iart].len, fh->idx[iart].pos, fh->idx[iart].pos + fh->idx[iart].len-1);
1228 if (iart < fh->nart-1)
1231 integer64 d = fh->idx[iart+1].pos - (fh->idx[iart].pos + fh->idx[iart].len);
1233 printf (
" < %+7lld >", d);
1248 DRHOOK_START (
"lfisup_alts");
1256 memcpy (fh->idx[iart].name,
trou__index, ARTNLEN);
1257 *KLONUT = fh->idx[iart].len;
1262 fh->hdr->iltal -= fh->idx[iart].len;
1264 if (iart < fh->nart-1)
1266 fh->idx[iart].len = fh->idx[iart+1].pos - fh->idx[iart].pos;
1270 integer64 pose = fh->idx[iart].pos - 1 + fh->idx[iart].len;
1271 int t = iart == fh->nart-1;
1279 pose = pose + pags - post;
1281 fh->idx[iart].len = 1 + pose - fh->idx[iart].pos;
1294 int iart1 =
lookup_rc (fh, CDNOM1, CDNOM1_len);
1295 int iart2 =
lookup_rc (fh, CDNOM2, CDNOM2_len);
1297 DRHOOK_START (
"lfiren_alts");
1305 if (!
check_an (CDNOM2, CDNOM2_len))
1321 memcpy (fh->idx[iart1].name,
trou__index, ARTNLEN);
1322 memcpy (fh->idx[iart1].name, CDNOM2, minARTN (CDNOM2_len));
1337 DRHOOK_START (
"lfiecr_alts");
1363 if (fh->idx[iart].len >= *KLONG)
1367 else if (iart < fh->nart-1)
1369 if (eqan (
trou__index, fh->idx[iart+1].name) && ((fh->idx[iart].len + fh->idx[iart+1].len) >= *KLONG))
1371 integer64 d = *KLONG - fh->idx[iart].len;
1372 fh->idx[iart+1].pos = fh->idx[iart+1].pos + d;
1373 fh->idx[iart+1].len = fh->idx[iart+1].len - d;
1374 fh->idx[iart].len = *KLONG;
1377 else if (eqan (
fin_d_index, fh->idx[iart+1].name))
1379 fh->idx[iart].len = *KLONG;
1392 for (iart = 0; iart < fh->nart; iart++)
1403 else if (eqan (
trou__index, fh->idx[iart].name) && (fh->idx[iart].len >= *KLONG))
1407 else if (fh->idx[iart].len < fh->idx[iartx].len)
1411 else if (0 && eqan (
trou__index, fh->idx[iart].name) && (iart < fh->nart-1) && (iartx < 0))
1417 memcpy (fh->idx[iart].name,
fin_d_index, ARTNLEN);
1447 fh->idx[iartx].pos = fh->idx[iartx-1].pos + fh->idx[iartx-1].len;
1449 fh->idx[iartx].pos = fh->hdr->inaph * fh->hdr->ilpar + 1;
1453 fh->idx[iartx].len = *KLONG;
1454 memcpy (fh->idx[iartx].name,
trou__index, ARTNLEN);
1455 memcpy (fh->idx[iartx].name,
CDNOMA, minARTN (CDNOMA_len));
1458 fh_write (fh, KTAB, (fh->idx[iartx].pos - 1) * 8, fh->idx[iartx].len * 8, 1);
1462 fh->hdr->iltal += fh->idx[iartx].len;
1470 integer64 size = fh->idx[iartx].pos + fh->idx[iartx].len - 8;
1471 fh->hdr->inaph = size / fh->hdr->ilpar;
1472 if (size % (fh->hdr->inaph * fh->hdr->ilpar))
1476 fh->hdr->iaxpd = fh->hdr->inaph;
1498 DRHOOK_START (
"lfiopt_alts");
1506 memset (CDNOMF,
' ', CDNOMF_len);
1507 memset (CDSTTO,
' ', CDSTTO_len);
1509 memcpy (CDNOMF, fh->cnomf, CDNOMF_len > strlen (fh->cnomf) ? strlen (fh->cnomf) : CDNOMF_len);
1510 memcpy (CDSTTO, fh->cstto, CDSTTO_len > strlen (fh->cstto) ? strlen (fh->cstto) : CDSTTO_len);
1512 *LDNOMM = fort_TRUE;
1513 *LDIMST = fort_FALSE;
1514 *LDERFA = fh->llerfa;
1515 *KNIMES = fh->inimes;
1527 DRHOOK_START (
"lfinaf_alts");
1529 *KNTROU = fh->hdr->intru;
1530 *KNALDO = fh->hdr->inalo - fh->hdr->intru;
1544 DRHOOK_START (
"lfinim_alts");
1548 if ((*KNIMES > 2) || (*KNIMES < 0))
1554 fh->inimes = *KNIMES;
1565 DRHOOK_START (
"lfierf_alts");
1567 fh->llerfa = *LDERFA;
1578 DRHOOK_START (
"lfioef_alts");
1580 *LDERFA = fh->llerfa;
1590 DRHOOK_START (
"lfifmd_alts");
1593 als->fmult = *KFACMD;
1601 DRHOOK_START (
"lfiofd_alts");
1602 *KFACMD = als->fmult;
1610 DRHOOK_START (
"lfiofm_alts");
1614 *KFACTM = fh->fmult;
1615 *LDOUVR = fort_TRUE;
1620 *KFACTM = als->fmult;
1622 *LDOUVR = fort_FALSE;
1633 DRHOOK_START (
"lfiafm_alts");
1639 else if (*KFACTM < 0)
1657 DRHOOK_START (
"lfisfm_alts");
1676 DRHOOK_START (
"lfineg_alts");
1685 DRHOOK_START (
"lfioeg_alts");
1693 DRHOOK_START (
"lfiomg_alts");
1695 *KULOUT = als->iulout;
1702 DRHOOK_START (
"lfinmg_alts");
1704 als->iulout = *KULOUT;
1754 lfi_alts_t * als = lookup_als (lfi->data); 1761 lfi_abor (
"Attempt to release lfi handler with opened files");
1773 return fh == NULL ? 0 : 1;
1780 return fh->inimes == 2 ? 1 : 0;
1787 return (als->nerfag == 0) || ((als->nerfag == 1) && istrue (fh->llerfa));
1798 memcpy (als->cmagic,
"lfi_alts", 8);
1800 als->fmult_list = NULL;
1834 char path[CDNOMF1_len+1];
1837 if ((*KREP =
lfi_fsmartcopy (CDNOMF1, CDNOMF2, 1, CDNOMF1_len, CDNOMF2_len)) != 0)
1842 if (stat (path, &st) == 0)
1843 *offset = st.st_size;
1856 integer64 INIMES = 2, INBARP = 0, INBARI = 0;
1857 logical LLNOMM = fort_TRUE, LLERFA = fort_TRUE, LLIMST = fort_TRUE;
1864 lfm->
cb->
lfiouv (lfm->
data, KREP, &INUMER, &LLNOMM, CDNOMF1, CLSTTO, &LLERFA,
1865 &LLIMST, &INIMES, &INBARP, &INBARI, CDNOMF1_len, CLSTTO_len);
1871 lfm->
cb->
lfinaf (lfm->
data, KREP, &INUMER, &INALDO, &INTROU, &INARES, &INAMAX);
1882 isize2 = ARTNLEN * INALDO,
1883 isized = isize2 % isize1;
1885 isize2 = isize2 + isize1 - isized;
1886 IFACMD = isize2 / isize1;
1894 &LLIMST, &INIMES, &INBARP, &INBARI, CDNOMF2_len, CLSTTN_len,
1906 integer64 pos = 1 + (fh->hdr->size * 3) / 8;
1916 fh->hdr->ilnal = +MAXLONG;
1919 for (iart = 0; iart < INALDO; iart++)
1924 lfm->
cb->
lficas (lfm->
data, KREP, &INUMER, fh->idx[iart].name, &fh->idx[iart].len, &IPOSEX, &LLAVAN, ARTNLEN);
1929 fh->idx[iart].pos = pos;
1930 pos += fh->idx[iart].len;
1931 len += fh->idx[iart].len;
1933 if (fh->hdr->ilnal > fh->idx[iart].len)
1934 fh->hdr->ilnal = fh->idx[iart].len;
1935 if (fh->hdr->ilxal < fh->idx[iart].len)
1936 fh->hdr->ilxal = fh->idx[iart].len;
1944 if (size % fh->hdr->size)
1945 size += (fh->hdr->size - (size % fh->hdr->size));
1946 fh->hdr->inaph = size / fh->hdr->size;
1947 fh->hdr->inalo = INALDO;
1948 fh->hdr->iltal = len;
1949 fh->hdr->iaxpd = fh->hdr->inaph;
1960 for (iart = 0; iart < INALDO; iart++)
1966 lfm->
cb->
lfilec (lfm->
data, KREP, &INUMER, fh->idx[iart].name, KTAB, &fh->idx[iart].len, ARTNLEN);
1972 fh_write (fh, KTAB, (fh->idx[iart].pos-1) * 8, fh->idx[iart].len * 8, 1);
1983 *offset = fh->offset;
1991 lfm->
cb->
lfifer (lfm->
data, KREP, &INUMER, CLSTTK, CLSTTK_len);
1996 lfs->
cb->
lfifer (lfs->
data, KREP, &INUMER, CLSTTK, CLSTTK_len);
2014 lfi_verb (NULL,
"lfi_altm_pack",
"KREP", KREP, NULL);
static int lfi_vrb_alts_hndl(lfi_hndl_t *lfi, integer64 *KNUMER)
static int check_an(const char *CDNOMA, const character_len CDNOMA_len)
lfi_fmul_t * lfi_fmul_get(lfi_fmul_t *fmul, const integer64 *KNUMER, integer64 *KFACTM)
static void lfinfo_alts(LFINFO_ARGS_DECL)
int(* is_fatl)(struct lfi_hndl_t *, integer64 *)
void(* lfinaf)(LFINAF_ARGS_DECL)
static void lfinaf_alts(LFINAF_ARGS_DECL)
static lfi_alts_fh_t * lookup_fh(lfi_alts_t *als, integer64 *KNUMER, int fatal)
void lfifra_dumm(LFIFRA_ARGS_DECL)
void lfiosf_miss(LFIOSF_ARGS_DECL)
lfi_hndl_t * lfi_get_altm_hndl(void *data)
static void lfioeg_alts(LFIOEG_ARGS_DECL)
static void lfiomg_alts(LFIOMG_ARGS_DECL)
void lfiosg_dumm(LFIOSG_ARGS_DECL)
lfi_fmul_t * lfi_fmul_set(lfi_fmul_t **fmul, const integer64 *KNUMER, const integer64 *KFACTM)
static void lfioef_alts(LFIOEF_ARGS_DECL)
void lfiver_dumm(LFIVER_ARGS_DECL)
struct lfi_alts_fh_idx_t lfi_alts_fh_idx_t
lfi_hndl_t * lfi_get_alts_hndl(void *data)
struct lfi_alts_fh_hdr_t lfi_alts_fh_hdr_t
static void lfilas_alts(LFILAS_ARGS_DECL)
void lfi_alts_size_(integer64 *KREP, character *CDNOMF1, integer64 *KSIZE, character_len CDNOMF1_len)
INTERFACE SUBROUTINE FACILO KNIVAU
INTERFACE SUBROUTINE FACILO && KREP
void(* lficas)(LFICAS_ARGS_DECL)
static const char * fin_d_index
static void lfiafm_alts(LFIAFM_ARGS_DECL)
static void fh_write_pad(lfi_alts_fh_t *fh, integer64 *KREP)
void lfimst_dumm(LFIMST_ARGS_DECL)
quick &counting sorts only inumt inumt name
void lficfg_dumm(LFICFG_ARGS_DECL)
static void fh_flush(lfi_alts_fh_t *fh)
int(* is_verb)(struct lfi_hndl_t *, integer64 *)
static void fh_fstat(lfi_alts_fh_t *fh, struct stat *st)
static void lfineg_alts(LFINEG_ARGS_DECL)
void(* destroy)(struct lfi_hndl_t *)
static void lfi_del_alts_hndl(lfi_hndl_t *lfi)
void(* lfilec)(LFILEC_ARGS_DECL)
static void lfisup_alts(LFISUP_ARGS_DECL)
static void lficap_alts(LFICAP_ARGS_DECL)
void lfista_dumm(LFISTA_ARGS_DECL)
static void fh_write(lfi_alts_fh_t *fh, void *ptr, integer64 pos, integer64 len, int lswap)
static int lookup_rc(lfi_alts_fh_t *fh, character *name, character_len name_len)
static void lfiouv_alts(LFIOUV_ARGS_DECL)
char * lfi_fstrdup(const character *fstr, const character_len len, char *cstr)
static int check_an_len(const char *CDNOMA, const character_len CDNOMA_len)
struct lfi_alts_fh_t lfi_alts_fh_t
static void lfiecr_alts(LFIECR_ARGS_DECL)
struct lfi_alts_t lfi_alts_t
void lfipxf_miss(LFIPXF_ARGS_DECL)
void(* lfiouv)(LFIOUV_ARGS_DECL)
static const char * trou__index
static void lfi_alts_pack(integer64 *KREP, character *CDNOMF1, character *CDNOMF2, character_len CDNOMF1_len, character_len CDNOMF2_len, lfi_alts_fh_kind_t kind, long *offset)
static void lfisfm_alts(LFISFM_ARGS_DECL)
static void lfinim_alts(LFINIM_ARGS_DECL)
lfi_grok_t lfi_grok(const character *file, character_len file_len)
void lfideb_dumm(LFIDEB_ARGS_DECL)
static int lfi_fat_alts_hndl(lfi_hndl_t *lfi, integer64 *KNUMER)
static void lfinum_alts(LFINUM_ARGS_DECL)
void lfi_abor(const char *fmt,...)
void lfiini_dumm(LFIINI_ARGS_DECL)
static void lficas_alts(LFICAS_ARGS_DECL)
integer(kind=kindofint) nidx
static void fh_close(lfi_alts_fh_t *fh, integer64 *KREP)
static void lfiren_alts(LFIREN_ARGS_DECL)
void lfiomf_dumm(LFIOMF_ARGS_DECL)
static int lfi_opn_alts_hndl(lfi_hndl_t *lfi, integer64 *KNUMER)
character_len lfi_fstrlen(const character *fstr, const character_len len)
static void fh_modified(lfi_alts_fh_t *fh)
static void fh_grow_idx(lfi_alts_fh_t *fh, integer64 alen, int *iartx)
void(* lfifer)(LFIFER_ARGS_DECL)
static void fh_read(lfi_alts_fh_t *fh, void *ptr, integer64 pos, integer64 len, int lswap)
static void lfiofd_alts(LFIOFD_ARGS_DECL)
void(* lfipos)(LFIPOS_ARGS_DECL)
int lfi_fsmartcopy(const character *cnomf1, const character *cnomf2, int copy, character_len cnomf1_len, character_len cnomf2_len)
integer64 lfi_fmul_del(lfi_fmul_t **fmul, const integer64 *KNUMER)
static void fh_open(lfi_alts_fh_t *fh, char *cnomf, char *cstto, lfi_alts_fh_kind_t kind, integer64 *KREP)
static void lfilaf_alts(LFILAF_ARGS_DECL)
static void lfilec_alts(LFILEC_ARGS_DECL)
static void lfilap_alts(LFILAP_ARGS_DECL)
void lfinsg_dumm(LFINSG_ARGS_DECL)
static void lfierf_alts(LFIERF_ARGS_DECL)
static void lfinmg_alts(LFINMG_ARGS_DECL)
static void lfipos_alts(LFIPOS_ARGS_DECL)
void lfi_fmul_free(lfi_fmul_t **fmul)
void lfi_alts_pack_(integer64 *KREP, character *CDNOMF1, character *CDNOMF2, character_len CDNOMF1_len, character_len CDNOMF2_len)
static const char * page__index
static void lfiouv_alts_ext(LFIOUV_ARGS_DECL, lfi_alts_fh_kind_t kind)
static integer64 fh_seek(lfi_alts_fh_t *fh, integer64 pos, int whence)
static void lfiopt_alts(LFIOPT_ARGS_DECL)
INTERFACE SUBROUTINE FACILO KNUMER
static lfi_alts_t * lookup_als(void *LFI)
static integer64 iulout(lfi_hndl_t *lfi)
INTERFACE SUBROUTINE FACONO CDNOMA
void(* lfifmd)(LFIFMD_ARGS_DECL)
int(* is_open)(struct lfi_hndl_t *, integer64 *)
void jswap_(void *, const void *, const int *, const int *)
static void xgetdate(integer64 *YYYYMMDD, integer64 *HHmmss)
static void lfifer_alts(LFIFER_ARGS_DECL)
static int seek_rc(lfi_alts_fh_t *fh, int d)
static void lfiofm_alts(LFIOFM_ARGS_DECL)
void lfi_verb(lfi_hndl_t *lfi, const char *func,...)
subroutine t(CDPREF, CDSUFF, KCODPA, LDNIVA, PMULTI)
static void lfifmd_alts(LFIFMD_ARGS_DECL)
static void fh_write_hdr(lfi_alts_fh_t *fh, integer64 *KREP)