mirror of
https://github.com/aaru-dps/Aaru.Server.git
synced 2025-12-16 19:24:27 +00:00
Add filesystem tester snippet for retrieving OS/2 EAs.
This commit is contained in:
8
fstester/README.md
Normal file
8
fstester/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
DiscImageChef Filesystem Testers
|
||||
================================
|
||||
|
||||
This folder contains source code for snippets designed to retrieve special features
|
||||
(e.g. extended attributes) from all files on installed volumes (getters) as well as snippets
|
||||
designed to create known files with all features specific to an
|
||||
operating system / filesystem combination to reverse engineer them and/or test
|
||||
DiscImageChef filesystem implementations.
|
||||
8
fstester/getter/README.md
Normal file
8
fstester/getter/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
DiscImageChef Filesystem Testers: Getters
|
||||
=========================================
|
||||
|
||||
This folder contains snippets designed to retrieve special features from files on a volume
|
||||
that can be feed to the Setters snippets to create special test filesystem volumes.
|
||||
|
||||
`os2_32` contains a snippet designed to retrieve all Extended Attributes from an OS/2 volume,
|
||||
under a 32-bit OS/2 version.
|
||||
228
fstester/getter/os2_32/DIR.C
Normal file
228
fstester/getter/os2_32/DIR.C
Normal file
@@ -0,0 +1,228 @@
|
||||
/****************************************************************************
|
||||
The Disc Image Chef
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Filename : dir.c
|
||||
Author(s) : Natalia Portillo
|
||||
|
||||
Component : fstester.getter.os2
|
||||
|
||||
--[ Description ] -----------------------------------------------------------
|
||||
|
||||
Contains directory handlers
|
||||
|
||||
--[ License ] ---------------------------------------------------------------
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warraty of
|
||||
MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2018 Natalia Portillo
|
||||
*****************************************************************************/
|
||||
|
||||
#define INCL_DOSFILEMGR // File Manager values
|
||||
#define INCL_DOSERRORS // DOS error values
|
||||
|
||||
#include <os2.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "dir.h"
|
||||
#include "ea.h"
|
||||
|
||||
int GetAllInDir(PSZ path, ULONG *eaCounter)
|
||||
{
|
||||
HDIR hdirFindHandle;
|
||||
FILEFINDBUF3 FindBuffer = {0}; // Returned from FindFirst/Next
|
||||
ULONG ulResultBufLen;
|
||||
ULONG ulFindCount;
|
||||
APIRET rc; // Return code
|
||||
PSZ pathWithWildcard;
|
||||
PSZ fullPath;
|
||||
ULONG flAttribute; // File attributes
|
||||
int isDir = 0;
|
||||
APIRET drc;
|
||||
|
||||
// Variables for EA saving
|
||||
char *eaBuffer;
|
||||
size_t eaSize;
|
||||
char eaPath[8 + 1 + 3 + 1];
|
||||
HFILE eaFileHandle; // Address of the handle for the file
|
||||
ULONG ulAction = 0; // Address of the variable that receives the value that specifies the action taken by the DosOpen function
|
||||
APIRET earc;
|
||||
|
||||
for(isDir = 0; isDir < 2; isDir++)
|
||||
{
|
||||
hdirFindHandle = HDIR_CREATE;
|
||||
ulResultBufLen = sizeof(FILEFINDBUF3);
|
||||
ulFindCount = 1; // Look for 1 file at a time
|
||||
rc = NO_ERROR; // Return code
|
||||
pathWithWildcard = malloc(strlen(path) + 5);
|
||||
strcpy(pathWithWildcard, path);
|
||||
strcat(pathWithWildcard, "\\*.*"); // Adds wildcard to passed path
|
||||
|
||||
flAttribute = FILE_ARCHIVED | FILE_SYSTEM | FILE_HIDDEN | FILE_READONLY; // All files
|
||||
if(isDir)
|
||||
flAttribute |= MUST_HAVE_DIRECTORY; // Must be a directory
|
||||
|
||||
rc = DosFindFirst(pathWithWildcard, // File pattern
|
||||
&hdirFindHandle, // Directory search handle
|
||||
flAttribute, // Search attribute
|
||||
&FindBuffer, // Result buffer
|
||||
ulResultBufLen, // Result buffer length
|
||||
&ulFindCount, // Number of entries to find
|
||||
FIL_STANDARD); // Return Level 1 file info
|
||||
|
||||
if(rc != NO_ERROR)
|
||||
{
|
||||
free(pathWithWildcard);
|
||||
if(rc == ERROR_NO_MORE_FILES && !isDir)
|
||||
continue;
|
||||
|
||||
printf("DosFindFirst error: return code = %u\n", rc);
|
||||
return rc;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(strcmp(FindBuffer.achName, ".") != 0 && strcmp(FindBuffer.achName, "..") != 0)
|
||||
{
|
||||
fullPath = malloc(strlen(path) + 2 + strlen(FindBuffer.achName) + 1);
|
||||
fullPath = strcpy(fullPath, path); // Parent path
|
||||
strcat(fullPath, "\\"); // Adds slashes
|
||||
strcat(fullPath, FindBuffer.achName); // Adds filename
|
||||
if(isDir)
|
||||
printf("%s\\\n", fullPath); // Print directory name
|
||||
else
|
||||
printf("%s\n", fullPath); // Print file name
|
||||
if(strcmp(FindBuffer.achName, ".") != 0 && strcmp(FindBuffer.achName, "..") != 0)
|
||||
{
|
||||
eaSize = 0;
|
||||
GetEAs(fullPath, &eaBuffer, &eaSize);
|
||||
|
||||
if(eaSize != 0)
|
||||
{
|
||||
sprintf(&eaPath, "%08d.EA", *eaCounter);
|
||||
earc = DosOpen(eaPath, &eaFileHandle, &ulAction, 0L, FILE_NORMAL,
|
||||
OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS,
|
||||
OPEN_FLAGS_NOINHERIT | OPEN_SHARE_DENYNONE | OPEN_ACCESS_READWRITE, NULL);
|
||||
|
||||
if(earc == NO_ERROR)
|
||||
{
|
||||
earc = DosWrite(eaFileHandle, eaBuffer, eaSize, &ulAction);
|
||||
if(earc == NO_ERROR)
|
||||
{
|
||||
printf("\tSaved %ld bytes from %ld bytes of EAs saved to %08d.EA\n", ulAction, eaSize,
|
||||
*eaCounter);
|
||||
*eaCounter += 1;
|
||||
}
|
||||
DosClose(eaFileHandle);
|
||||
}
|
||||
|
||||
free(eaBuffer);
|
||||
}
|
||||
|
||||
if(isDir)
|
||||
{
|
||||
drc = GetAllInDir(fullPath, eaCounter);
|
||||
if(drc != NO_ERROR && drc != ERROR_NO_MORE_FILES)
|
||||
{
|
||||
printf("GetAllInDir(%s) returned %u\n", fullPath, drc);
|
||||
return drc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
free(fullPath);
|
||||
}
|
||||
}
|
||||
|
||||
while(rc != ERROR_NO_MORE_FILES)
|
||||
{
|
||||
ulFindCount = 1; // Reset find count
|
||||
|
||||
rc = DosFindNext(hdirFindHandle, // Directory handle
|
||||
&FindBuffer, // Result buffer
|
||||
ulResultBufLen, // Result buffer length
|
||||
&ulFindCount); // Number of entries to find
|
||||
|
||||
if(rc != NO_ERROR && rc != ERROR_NO_MORE_FILES)
|
||||
{
|
||||
free(pathWithWildcard);
|
||||
printf("DosFindNext error: return code = %u\n", rc);
|
||||
return rc;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(strcmp(FindBuffer.achName, ".") == 0 || strcmp(FindBuffer.achName, "..") == 0)
|
||||
continue;
|
||||
|
||||
fullPath = malloc(strlen(path) + 2 + strlen(FindBuffer.achName) + 1);
|
||||
fullPath = strcpy(fullPath, path); // Parent path
|
||||
strcat(fullPath, "\\"); // Adds slashes
|
||||
strcat(fullPath, FindBuffer.achName); // Adds filename
|
||||
if(isDir)
|
||||
printf("%s\\\n", fullPath); // Print directory name
|
||||
else
|
||||
printf("%s\n", fullPath); // Print file name
|
||||
|
||||
eaSize = 0;
|
||||
GetEAs(fullPath, &eaBuffer, &eaSize);
|
||||
|
||||
if(eaSize != 0)
|
||||
{
|
||||
sprintf(&eaPath, "%08d.EA", *eaCounter);
|
||||
earc = DosOpen(eaPath, &eaFileHandle, &ulAction, 0L, FILE_NORMAL,
|
||||
OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS,
|
||||
OPEN_FLAGS_NOINHERIT | OPEN_SHARE_DENYNONE | OPEN_ACCESS_READWRITE, NULL);
|
||||
|
||||
if(earc == NO_ERROR)
|
||||
{
|
||||
earc = DosWrite(eaFileHandle, eaBuffer, eaSize, &ulAction);
|
||||
if(earc == NO_ERROR)
|
||||
{
|
||||
printf("\tSaved %ld bytes from %ld bytes of EAs saved to %08d.EA\n", ulAction, eaSize,
|
||||
*eaCounter);
|
||||
*eaCounter += 1;
|
||||
}
|
||||
DosClose(eaFileHandle);
|
||||
}
|
||||
else
|
||||
printf("Error %d calling DosOpen\n", earc);
|
||||
|
||||
free(eaBuffer);
|
||||
}
|
||||
|
||||
if(isDir)
|
||||
{
|
||||
drc = GetAllInDir(fullPath, eaCounter);
|
||||
if(drc != NO_ERROR && drc != ERROR_NO_MORE_FILES)
|
||||
{
|
||||
printf("GetAllInDir(%s) returned %u\n", fullPath, drc);
|
||||
return drc;
|
||||
}
|
||||
}
|
||||
|
||||
free(fullPath);
|
||||
} /* endif */
|
||||
} /* endwhile */
|
||||
|
||||
free(pathWithWildcard);
|
||||
rc = DosFindClose(hdirFindHandle); // Close our directory handle
|
||||
if(rc != NO_ERROR)
|
||||
{
|
||||
printf("DosFindClose error: return code = %u\n", rc);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
return ERROR_NO_MORE_FILES;
|
||||
}
|
||||
|
||||
37
fstester/getter/os2_32/DIR.H
Normal file
37
fstester/getter/os2_32/DIR.H
Normal file
@@ -0,0 +1,37 @@
|
||||
/****************************************************************************
|
||||
The Disc Image Chef
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Filename : dir.h
|
||||
Author(s) : Natalia Portillo
|
||||
|
||||
Component : fstester.getter.os2
|
||||
|
||||
--[ Description ] -----------------------------------------------------------
|
||||
|
||||
Contains directory definitions
|
||||
|
||||
--[ License ] ---------------------------------------------------------------
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warraty of
|
||||
MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2018 Natalia Portillo
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef DIC_FSTESTER_GETTER_OS2_DIR_H
|
||||
#define DIC_FSTESTER_GETTER_OS2_DIR_H
|
||||
|
||||
int GetAllInDir();
|
||||
|
||||
#endif
|
||||
93
fstester/getter/os2_32/EA.C
Normal file
93
fstester/getter/os2_32/EA.C
Normal file
@@ -0,0 +1,93 @@
|
||||
/* Public domain code from Info/Zip
|
||||
* Written by Kai Uew Rommel
|
||||
* from zip30/os2/os2zip.c
|
||||
* Modified by Natalia Portillo
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define INCL_NOPM
|
||||
#define INCL_DOSNLS
|
||||
#define INCL_DOSERRORS
|
||||
|
||||
#include <os2.h>
|
||||
|
||||
#include "ea.h"
|
||||
|
||||
void GetEAs(char *path, char **bufptr, size_t *size)
|
||||
{
|
||||
FILESTATUS4 fs;
|
||||
PDENA2 pDENA, pFound;
|
||||
EAOP2 eaop;
|
||||
PGEA2 pGEA;
|
||||
PGEA2LIST pGEAlist;
|
||||
PFEA2LIST pFEAlist;
|
||||
ULONG ulAttributes;
|
||||
ULONG nLength;
|
||||
ULONG nBlock;
|
||||
|
||||
if(DosQueryPathInfo(path, FIL_QUERYEASIZE, (PBYTE) & fs, sizeof(fs)))
|
||||
return;
|
||||
|
||||
nBlock = max(fs.cbList, 65535);
|
||||
|
||||
if((pDENA = malloc((size_t)nBlock)) == NULL)
|
||||
return;
|
||||
|
||||
ulAttributes = -1;
|
||||
|
||||
if(DosEnumAttribute(ENUMEA_REFTYPE_PATH, path, 1, pDENA, nBlock, &ulAttributes, ENUMEA_LEVEL_NO_VALUE) ||
|
||||
ulAttributes == 0 || (pGEAlist = malloc((size_t)nBlock)) == NULL)
|
||||
{
|
||||
free(pDENA);
|
||||
return;
|
||||
}
|
||||
|
||||
pGEA = pGEAlist->list;
|
||||
memset(pGEAlist, 0, nBlock);
|
||||
pFound = pDENA;
|
||||
|
||||
while(ulAttributes--)
|
||||
{
|
||||
pGEA->cbName = pFound->cbName;
|
||||
strcpy(pGEA->szName, pFound->szName);
|
||||
|
||||
nLength = sizeof(GEA2) + strlen(pGEA->szName);
|
||||
nLength = ((nLength - 1) / sizeof(ULONG) + 1) * sizeof(ULONG);
|
||||
|
||||
pGEA->oNextEntryOffset = ulAttributes ? nLength : 0;
|
||||
pGEA = (PGEA2)((PCH)pGEA + nLength);
|
||||
|
||||
pFound = (PDENA2)((PCH)pFound + pFound->oNextEntryOffset);
|
||||
}
|
||||
|
||||
if(pGEA == pGEAlist->list) // No attributes to save
|
||||
{
|
||||
free(pDENA);
|
||||
free(pGEAlist);
|
||||
return;
|
||||
}
|
||||
|
||||
pGEAlist->cbList = (PCH)pGEA - (PCH)pGEAlist;
|
||||
|
||||
pFEAlist = (PVOID)pDENA; // reuse buffer
|
||||
pFEAlist->cbList = nBlock;
|
||||
|
||||
eaop.fpGEA2List = pGEAlist;
|
||||
eaop.fpFEA2List = pFEAlist;
|
||||
eaop.oError = 0;
|
||||
|
||||
if(DosQueryPathInfo(path, FIL_QUERYEASFROMLIST, (PBYTE) & eaop, sizeof(eaop)))
|
||||
{
|
||||
free(pDENA);
|
||||
free(pGEAlist);
|
||||
return;
|
||||
}
|
||||
|
||||
*size = pFEAlist->cbList;
|
||||
*bufptr = (char *)pFEAlist;
|
||||
|
||||
free(pDENA);
|
||||
free(pGEAlist);
|
||||
}
|
||||
41
fstester/getter/os2_32/EA.H
Normal file
41
fstester/getter/os2_32/EA.H
Normal file
@@ -0,0 +1,41 @@
|
||||
/****************************************************************************
|
||||
The Disc Image Chef
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Filename : ea.h
|
||||
Author(s) : Natalia Portillo
|
||||
|
||||
Component : fstester.getter.os2
|
||||
|
||||
--[ Description ] -----------------------------------------------------------
|
||||
|
||||
Contains extended attribute definitions
|
||||
|
||||
--[ License ] ---------------------------------------------------------------
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warraty of
|
||||
MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2018 Natalia Portillo
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef DIC_FSTESTER_GETTER_OS2_EA_H
|
||||
#define DIC_FSTESTER_GETTER_OS2_EA_H
|
||||
|
||||
#ifndef max
|
||||
#define max(a, b) ((a) < (b) ? (b) : (a))
|
||||
#endif
|
||||
|
||||
void GetEAs();
|
||||
|
||||
#endif
|
||||
46
fstester/getter/os2_32/MAIN.C
Normal file
46
fstester/getter/os2_32/MAIN.C
Normal file
@@ -0,0 +1,46 @@
|
||||
/****************************************************************************
|
||||
The Disc Image Chef
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Filename : main.c
|
||||
Author(s) : Natalia Portillo
|
||||
|
||||
Component : fstester.getter.os2
|
||||
|
||||
--[ Description ] -----------------------------------------------------------
|
||||
|
||||
Contains global definitions
|
||||
|
||||
--[ License ] ---------------------------------------------------------------
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warraty of
|
||||
MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2018 Natalia Portillo
|
||||
*****************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <os2.h>
|
||||
|
||||
#include "main.h"
|
||||
#include "dir.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
ULONG eaCounter = 0;
|
||||
printf("The Disc Image Chef Filesystem Tester (Getter) for OS/2 %s\n", DIC_FSTESTER_VERSION);
|
||||
printf("%s\n", DIC_COPYRIGHT);
|
||||
|
||||
return GetAllInDir("C:", &eaCounter);
|
||||
}
|
||||
38
fstester/getter/os2_32/MAIN.H
Normal file
38
fstester/getter/os2_32/MAIN.H
Normal file
@@ -0,0 +1,38 @@
|
||||
/****************************************************************************
|
||||
The Disc Image Chef
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Filename : main.h
|
||||
Author(s) : Natalia Portillo
|
||||
|
||||
Component : fstester.getter.os2
|
||||
|
||||
--[ Description ] -----------------------------------------------------------
|
||||
|
||||
Contains global definitions
|
||||
|
||||
--[ License ] ---------------------------------------------------------------
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warraty of
|
||||
MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2018 Natalia Portillo
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef DIC_FSTESTER_GETTER_OS2_MAIN_H
|
||||
#define DIC_FSTESTER_GETTER_OS2_MAIN_H
|
||||
|
||||
#define DIC_FSTESTER_VERSION "0.1"
|
||||
#define DIC_COPYRIGHT "Copyright (C) 2011-2018 Natalia Portillo"
|
||||
|
||||
#endif
|
||||
BIN
fstester/getter/os2_32/OS2.EXE
Executable file
BIN
fstester/getter/os2_32/OS2.EXE
Executable file
Binary file not shown.
2
fstester/getter/os2_32/OS2.LK1
Normal file
2
fstester/getter/os2_32/OS2.LK1
Normal file
@@ -0,0 +1,2 @@
|
||||
FIL dir.obj,ea.obj,main.obj
|
||||
|
||||
326
fstester/getter/os2_32/OS2.MAP
Normal file
326
fstester/getter/os2_32/OS2.MAP
Normal file
@@ -0,0 +1,326 @@
|
||||
Open Watcom Linker Version 1.8
|
||||
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
|
||||
Created on: 18/01/10 16:16:05
|
||||
Executable Image: os2.exe
|
||||
creating an OS/2 32-bit executable
|
||||
|
||||
|
||||
+------------+
|
||||
| Groups |
|
||||
+------------+
|
||||
|
||||
Group Address Size
|
||||
===== ======= ====
|
||||
|
||||
DGROUP 0002:00000000 00010820
|
||||
|
||||
|
||||
|
||||
+--------------+
|
||||
| Segments |
|
||||
+--------------+
|
||||
|
||||
Segment Class Group Address Size
|
||||
======= ===== ===== ======= ====
|
||||
|
||||
BEGTEXT CODE AUTO 0001:00000000 00000007
|
||||
_TEXT CODE AUTO 0001:00000010 0000347f
|
||||
_NULL BEGDATA DGROUP 0002:00000000 00000004
|
||||
_AFTERNULL BEGDATA DGROUP 0002:00000004 00000000
|
||||
CONST DATA DGROUP 0002:00000004 00000198
|
||||
CONST2 DATA DGROUP 0002:0000019c 00000000
|
||||
_DATA DATA DGROUP 0002:0000019c 00000434
|
||||
XIB DATA DGROUP 0002:000005d0 00000000
|
||||
XI DATA DGROUP 0002:000005d0 00000012
|
||||
XIE DATA DGROUP 0002:000005e2 00000000
|
||||
YIB DATA DGROUP 0002:000005e2 00000000
|
||||
YI DATA DGROUP 0002:000005e2 00000006
|
||||
YIE DATA DGROUP 0002:000005e8 00000000
|
||||
TIB DATA DGROUP 0002:000005e8 00000000
|
||||
TI DATA DGROUP 0002:000005e8 00000000
|
||||
TIE DATA DGROUP 0002:000005e8 00000000
|
||||
DATA DATA DGROUP 0002:000005e8 00000000
|
||||
_BSS BSS DGROUP 0002:000005e8 0000022c
|
||||
STACK STACK DGROUP 0002:00000820 00010000
|
||||
|
||||
|
||||
+----------------+
|
||||
| Memory Map |
|
||||
+----------------+
|
||||
|
||||
* = unreferenced symbol
|
||||
+ = symbol only referenced locally
|
||||
|
||||
Address Symbol
|
||||
======= ======
|
||||
|
||||
Module: dir.obj(C:\dic\os2\dir.c)
|
||||
0001:00000130 GetAllInDir
|
||||
Module: ea.obj(C:\dic\os2\ea.c)
|
||||
0001:00000710 GetEAs
|
||||
Module: main.obj(C:\dic\os2\main.c)
|
||||
0001:0000092d main
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(stk)
|
||||
0001:000009a1* __STK
|
||||
0001:00000991 __CHK
|
||||
0001:000009cd* __GRO
|
||||
0001:000009c0* __STKOVERFLOW
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(strlen.c)
|
||||
0001:000009f0 strlen
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(nmalloc.c)
|
||||
0001:00000a10 malloc
|
||||
0001:00000a20 _nmalloc
|
||||
0002:000001ac __nheapbeg
|
||||
0002:000001b0 __MiniHeapRover
|
||||
0002:000001b4 __LargestSizeB4MiniHeapRover
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(strcpy.c)
|
||||
0001:00000b40 strcpy
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(strcat.c)
|
||||
0001:00000b70 strcat
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(nfree.c)
|
||||
0001:00000bb0 free
|
||||
0001:00000bc0 _nfree
|
||||
0002:000005e8 __MiniHeapFreeRover
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(printf.c)
|
||||
0001:00000cd0 printf
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(_strcmp)
|
||||
0001:00000d00 strcmp
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(sprintf.c)
|
||||
0001:00000e50 sprintf
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(memset.c)
|
||||
0001:00000e80 memset
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(cstart)
|
||||
0001:00000ea0 _cstart_
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(xmsgo32.c)
|
||||
0001:00000f00+ __exit_with_msg
|
||||
0001:00000f50 __fatal_runtime_error
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(maino32.c)
|
||||
0002:000001b8+ __FirstThreadData
|
||||
0002:000001bc __GetThreadPtr
|
||||
0002:000001c0 _AccessFileH
|
||||
0002:000001c4 _ReleaseFileH
|
||||
0002:000001c8 _AccessIOB
|
||||
0002:000001cc _ReleaseIOB
|
||||
0002:000001d0 _AccessNHeap
|
||||
0002:000001d4* _AccessFHeap
|
||||
0002:000001d8 _ReleaseNHeap
|
||||
0002:000001dc* _ReleaseFHeap
|
||||
0002:000001e0* _AccessTDList
|
||||
0001:00000f8b __threadstack
|
||||
0001:00000f92* __threadid
|
||||
0001:00000f9b __OS2MainInit
|
||||
0001:0000100c+ __OS2Init
|
||||
0001:0000104d* __OS2Fini
|
||||
0001:00001055+ __shutdown_stack_checking
|
||||
0001:0000106a __exit
|
||||
0002:000001e4* _ReleaseTDList
|
||||
0002:000001e8+ __sig_init_rtn
|
||||
0002:000001ec* __sig_fini_rtn
|
||||
0002:000001f0* __threadstksize
|
||||
0002:000001f4 __process_fini
|
||||
0002:000005ec __Is_DLL
|
||||
0002:000005f0+ __saved_CS
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(nmemneed.c)
|
||||
0001:000010c0 __nmemneed
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(mem.c)
|
||||
0001:000010d0 __MemAllocator
|
||||
0001:00001180 __MemFree
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(grownear.c)
|
||||
0001:00001430 __ExpandDGROUP
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(iob.c)
|
||||
0002:000001f8 __iob
|
||||
0002:00000400* _fmode
|
||||
0002:000006f4 __OpenStreams
|
||||
0002:000006f8 __ClosedStreams
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(fprtf.c)
|
||||
0001:00001470 __fprtf
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(vsprintf.c)
|
||||
0001:00001570 vsprintf
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(__stos)
|
||||
0001:000015a0 __STOSB
|
||||
0001:000015d7* __STOSD
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(main2o32.c)
|
||||
0001:00001650 __OS2Main
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(segdefns)
|
||||
0001:00000003 ___begtext
|
||||
0002:00000000* __nullarea
|
||||
0002:000005d0 _Start_XI
|
||||
0002:000005e2 _End_XI
|
||||
0002:000005e2 _Start_YI
|
||||
0002:000005e8 _End_YI
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(enterdb.c)
|
||||
0001:000016c0 __EnterWVIDEO
|
||||
0002:00000404+ __WD_Present
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(crwdata)
|
||||
0002:0000044c _osmajor
|
||||
0002:0000044d _osminor
|
||||
0002:00000418* _LpDllName
|
||||
0002:0000041c* _LpwCmdLine
|
||||
0002:00000420* _LpwPgmName
|
||||
0002:00000424* _LpwDllName
|
||||
0002:00000410 _LpCmdLine
|
||||
0002:00000414 _LpPgmName
|
||||
0002:00000408* _dynend
|
||||
0002:0000040c _curbrk
|
||||
0002:00000428* _STACKLOW
|
||||
0002:0000042c* _STACKTOP
|
||||
0002:00000430 __ASTACKSIZ
|
||||
0002:00000434 __ASTACKPTR
|
||||
0002:00000438* _cbyte
|
||||
0002:0000043c* _cbyte2
|
||||
0002:00000440* _child
|
||||
0002:00000446 _Envptr
|
||||
0002:0000044a* _Envseg
|
||||
0002:00000444* __no87
|
||||
0002:0000044e* __FPE_handler
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(cinit.c)
|
||||
0001:000016f0 __CommonInit
|
||||
0002:000006fc __hmodule
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(initrtns.c)
|
||||
0001:00001710 __InitRtns
|
||||
0001:00001770 __FiniRtns
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(amblksiz.c)
|
||||
0002:00000454 _amblksiz
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(heapen.c)
|
||||
0001:000017e0* _heapenable
|
||||
0002:00000458 __heap_enabled
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(nheapmin.c)
|
||||
0001:00001800* _heapshrink
|
||||
0001:00001810* _heapmin
|
||||
0001:00001820* _nheapmin
|
||||
0001:000018e0 _nheapshrink
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(initfile.c)
|
||||
0001:00001950 __InitFiles
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(ioexit.c)
|
||||
0001:00001a60* fcloseall
|
||||
0001:00001a70 __full_io_exit
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(fputc.c)
|
||||
0001:00001a80 fputc
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(ioalloc.c)
|
||||
0001:00001b80 __ioalloc
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(prtf.c)
|
||||
0001:00001c20 __prtf
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(flush.c)
|
||||
0001:000029d0 __flush
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(mthrdini.c)
|
||||
0001:00002ae0 __InitThreadData
|
||||
0002:0000045c __ThreadDataSize
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(cmain386.c)
|
||||
0001:00002b00 __CMain
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(dosseg)
|
||||
0000:00001234 __DOSseg__
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(fclose.c)
|
||||
0001:00002b50+ __doclose
|
||||
0001:00002c10 __shutdown_stream
|
||||
0001:00002c40* fclose
|
||||
0002:00000700+ __RmTmpFileFn
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(freefp.c)
|
||||
0001:00002c80 __freefp
|
||||
0001:00002cd0 __purgefp
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(seterrno.c)
|
||||
0001:00002d02 __set_errno
|
||||
0001:00002d13* __set_EDOM
|
||||
0001:00002d21* __set_ERANGE
|
||||
0001:00002d2f* __set_EINVAL
|
||||
0001:00002d42 __set_doserrno
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(chktty.c)
|
||||
0001:00002d60 __chktty
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(wctomb.c)
|
||||
0001:00002da0 wctomb
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(itoa.c)
|
||||
0001:00002de0+ utoa
|
||||
0001:00002e40 itoa
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(strupr.c)
|
||||
0001:00002e80 strupr
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(noefgfmt.c)
|
||||
0002:00000460 __EFG_printf
|
||||
0002:00000464* __EFG_scanf
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(lltoa.c)
|
||||
0001:00002ee0 ulltoa
|
||||
0001:00002f50* lltoa
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(ltoa.c)
|
||||
0001:00002f90 ultoa
|
||||
0001:00002ff0* ltoa
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(mbisdbcs.c)
|
||||
0002:00000704 __IsDBCS
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(mbislead.c)
|
||||
0001:00003030* _ismbblead
|
||||
0002:00000708 __MBCSIsTable
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(lseekos2.c)
|
||||
0001:00003060 __lseek
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(fsync.c)
|
||||
0001:000030a0 fsync
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(qwrit.c)
|
||||
0001:000030d0 __qwrite
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(___argc.c)
|
||||
0002:0000080c ___Argc
|
||||
0002:00000810 ___Argv
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(exit.c)
|
||||
0001:00003190+ __null_int23_exit
|
||||
0001:00003192 exit
|
||||
0001:000031e2* _exit
|
||||
0002:00000468+ __int23_exit
|
||||
0002:0000046c+ __FPE_handler_exit
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(_clseos2.c)
|
||||
0001:00003200 __close
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(isattos2.c)
|
||||
0001:00003250 isatty
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(alphabet.c)
|
||||
0002:00000174 __Alphabet
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(mbinit.c)
|
||||
0001:000032c1 __mbinit
|
||||
0002:00000470+ __MBCodePage
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(dosret.c)
|
||||
0001:000033d0+ _dosretax
|
||||
0001:000033f0* _dosret0
|
||||
0001:00003410 __set_errno_dos
|
||||
Module: C:\WATCOM/lib386/os2\clib3s.lib(iomode.c)
|
||||
0001:00003450 __GetIOMode
|
||||
0001:00003470 __SetIOMode_nogrow
|
||||
0002:00000578+ __NFiles
|
||||
0002:0000057c+ __init_mode
|
||||
0002:000005cc+ __io_mode
|
||||
|
||||
|
||||
+----------------------+
|
||||
| Imported Symbols |
|
||||
+----------------------+
|
||||
|
||||
Symbol Module
|
||||
====== ======
|
||||
|
||||
DosFindFirst DOSCALLS
|
||||
DosOpen DOSCALLS
|
||||
DosWrite DOSCALLS
|
||||
DosClose DOSCALLS
|
||||
DosFindNext DOSCALLS
|
||||
DosFindClose DOSCALLS
|
||||
DosQueryPathInfo DOSCALLS
|
||||
DosEnumAttribute DOSCALLS
|
||||
DosQuerySysInfo DOSCALLS
|
||||
DosExit DOSCALLS
|
||||
DosAllocMem DOSCALLS
|
||||
DosFreeMem DOSCALLS
|
||||
DosSetFilePtr DOSCALLS
|
||||
DosResetBuffer DOSCALLS
|
||||
DosQueryHType DOSCALLS
|
||||
DosQueryDBCSEnv NLS
|
||||
DosQueryCp DOSCALLS
|
||||
|
||||
|
||||
+--------------------+
|
||||
| Libraries Used |
|
||||
+--------------------+
|
||||
|
||||
C:\WATCOM/lib386/os2\clib3s.lib
|
||||
C:\WATCOM/lib386/os2\os2386.lib
|
||||
|
||||
|
||||
+-----------------------+
|
||||
| Linker Statistics |
|
||||
+-----------------------+
|
||||
|
||||
Stack size: 00010000 (65536.)
|
||||
Memory size: 00013caf (81071.)
|
||||
Entry point address: 0001:00000ea0
|
||||
Link time: 00:00.08
|
||||
3
fstester/getter/os2_32/OS2.MK
Normal file
3
fstester/getter/os2_32/OS2.MK
Normal file
@@ -0,0 +1,3 @@
|
||||
project : C:\dic\os2\os2.exe .SYMBOLIC
|
||||
|
||||
!include C:\dic\os2\os2.mk1
|
||||
35
fstester/getter/os2_32/OS2.MK1
Normal file
35
fstester/getter/os2_32/OS2.MK1
Normal file
@@ -0,0 +1,35 @@
|
||||
!define BLANK ""
|
||||
C:\dic\os2\dir.obj : C:\dic\os2\dir.c .AUTODEPEND
|
||||
@C:
|
||||
cd C:\dic\os2
|
||||
*wcc386 dir.c -i="C:\WATCOM/h;C:\WATCOM/h/os2" -w4 -e25 -zq -od -d2 -3s -bt&
|
||||
=os2 -fo=.obj -mf
|
||||
|
||||
C:\dic\os2\ea.obj : C:\dic\os2\ea.c .AUTODEPEND
|
||||
@C:
|
||||
cd C:\dic\os2
|
||||
*wcc386 ea.c -i="C:\WATCOM/h;C:\WATCOM/h/os2" -w4 -e25 -zq -od -d2 -3s -bt=&
|
||||
os2 -fo=.obj -mf
|
||||
|
||||
C:\dic\os2\main.obj : C:\dic\os2\main.c .AUTODEPEND
|
||||
@C:
|
||||
cd C:\dic\os2
|
||||
*wcc386 main.c -i="C:\WATCOM/h;C:\WATCOM/h/os2" -w4 -e25 -zq -od -d2 -3s -b&
|
||||
t=os2 -fo=.obj -mf
|
||||
|
||||
C:\dic\os2\os2.exe : C:\dic\os2\dir.obj C:\dic\os2\ea.obj C:\dic\os2\main.ob&
|
||||
j C:\dic\os2\dir.h C:\dic\os2\ea.h C:\dic\os2\main.h .AUTODEPEND
|
||||
@C:
|
||||
cd C:\dic\os2
|
||||
@%write os2.lk1 FIL dir.obj,ea.obj,main.obj
|
||||
@%append os2.lk1
|
||||
!ifneq BLANK ""
|
||||
*wlib -q -n -b os2.imp
|
||||
@%append os2.lk1 LIBR os2.imp
|
||||
!endif
|
||||
*wlink name os2 d all SYS os2v2 op m op maxe=25 op q op symf op vers=0.1.0 &
|
||||
@os2.lk1
|
||||
!ifneq BLANK ""
|
||||
rc -i $[: -i C:\WATCOM\h -i C:\WATCOM\h\os2 os2.exe
|
||||
!endif
|
||||
|
||||
BIN
fstester/getter/os2_32/OS2.SYM
Normal file
BIN
fstester/getter/os2_32/OS2.SYM
Normal file
Binary file not shown.
238
fstester/getter/os2_32/OS2.TGT
Normal file
238
fstester/getter/os2_32/OS2.TGT
Normal file
@@ -0,0 +1,238 @@
|
||||
40
|
||||
targetIdent
|
||||
0
|
||||
MProject
|
||||
1
|
||||
MComponent
|
||||
0
|
||||
2
|
||||
WString
|
||||
4
|
||||
OEXE
|
||||
3
|
||||
WString
|
||||
5
|
||||
oc2eo
|
||||
1
|
||||
0
|
||||
1
|
||||
4
|
||||
MCommand
|
||||
0
|
||||
5
|
||||
MCommand
|
||||
0
|
||||
6
|
||||
MItem
|
||||
7
|
||||
os2.exe
|
||||
7
|
||||
WString
|
||||
4
|
||||
OEXE
|
||||
8
|
||||
WVList
|
||||
1
|
||||
9
|
||||
MVState
|
||||
10
|
||||
WString
|
||||
7
|
||||
OS2LINK
|
||||
11
|
||||
WString
|
||||
31
|
||||
o????Version (Major.minor.rev):
|
||||
1
|
||||
12
|
||||
WString
|
||||
5
|
||||
0.1.0
|
||||
0
|
||||
13
|
||||
WVList
|
||||
1
|
||||
14
|
||||
ActionStates
|
||||
15
|
||||
WString
|
||||
5
|
||||
&Make
|
||||
16
|
||||
WVList
|
||||
0
|
||||
-1
|
||||
1
|
||||
1
|
||||
0
|
||||
17
|
||||
WPickList
|
||||
8
|
||||
18
|
||||
MItem
|
||||
3
|
||||
*.c
|
||||
19
|
||||
WString
|
||||
4
|
||||
COBJ
|
||||
20
|
||||
WVList
|
||||
2
|
||||
21
|
||||
MRState
|
||||
22
|
||||
WString
|
||||
3
|
||||
WCC
|
||||
23
|
||||
WString
|
||||
30
|
||||
??2??80386 Stack based calling
|
||||
1
|
||||
1
|
||||
24
|
||||
MRState
|
||||
25
|
||||
WString
|
||||
3
|
||||
WCC
|
||||
26
|
||||
WString
|
||||
39
|
||||
??2??Pentium Pro Register based calling
|
||||
1
|
||||
0
|
||||
27
|
||||
WVList
|
||||
0
|
||||
-1
|
||||
1
|
||||
1
|
||||
0
|
||||
28
|
||||
MItem
|
||||
5
|
||||
dir.c
|
||||
29
|
||||
WString
|
||||
4
|
||||
COBJ
|
||||
30
|
||||
WVList
|
||||
0
|
||||
31
|
||||
WVList
|
||||
0
|
||||
18
|
||||
1
|
||||
1
|
||||
0
|
||||
32
|
||||
MItem
|
||||
4
|
||||
ea.c
|
||||
33
|
||||
WString
|
||||
4
|
||||
COBJ
|
||||
34
|
||||
WVList
|
||||
0
|
||||
35
|
||||
WVList
|
||||
0
|
||||
18
|
||||
1
|
||||
1
|
||||
0
|
||||
36
|
||||
MItem
|
||||
6
|
||||
main.c
|
||||
37
|
||||
WString
|
||||
4
|
||||
COBJ
|
||||
38
|
||||
WVList
|
||||
0
|
||||
39
|
||||
WVList
|
||||
0
|
||||
18
|
||||
1
|
||||
1
|
||||
0
|
||||
40
|
||||
MItem
|
||||
3
|
||||
*.h
|
||||
41
|
||||
WString
|
||||
3
|
||||
NIL
|
||||
42
|
||||
WVList
|
||||
0
|
||||
43
|
||||
WVList
|
||||
0
|
||||
-1
|
||||
1
|
||||
1
|
||||
0
|
||||
44
|
||||
MItem
|
||||
5
|
||||
dir.h
|
||||
45
|
||||
WString
|
||||
3
|
||||
NIL
|
||||
46
|
||||
WVList
|
||||
0
|
||||
47
|
||||
WVList
|
||||
0
|
||||
40
|
||||
1
|
||||
1
|
||||
0
|
||||
48
|
||||
MItem
|
||||
4
|
||||
ea.h
|
||||
49
|
||||
WString
|
||||
3
|
||||
NIL
|
||||
50
|
||||
WVList
|
||||
0
|
||||
51
|
||||
WVList
|
||||
0
|
||||
40
|
||||
1
|
||||
1
|
||||
0
|
||||
52
|
||||
MItem
|
||||
6
|
||||
main.h
|
||||
53
|
||||
WString
|
||||
3
|
||||
NIL
|
||||
54
|
||||
WVList
|
||||
0
|
||||
55
|
||||
WVList
|
||||
0
|
||||
40
|
||||
1
|
||||
1
|
||||
0
|
||||
43
fstester/getter/os2_32/OS2.WPJ
Normal file
43
fstester/getter/os2_32/OS2.WPJ
Normal file
@@ -0,0 +1,43 @@
|
||||
40
|
||||
projectIdent
|
||||
0
|
||||
VpeMain
|
||||
1
|
||||
WRect
|
||||
624
|
||||
1450
|
||||
7680
|
||||
9210
|
||||
2
|
||||
MProject
|
||||
3
|
||||
MCommand
|
||||
0
|
||||
4
|
||||
MCommand
|
||||
0
|
||||
1
|
||||
5
|
||||
WFileName
|
||||
7
|
||||
os2.tgt
|
||||
6
|
||||
WVList
|
||||
1
|
||||
7
|
||||
VComponent
|
||||
8
|
||||
WRect
|
||||
0
|
||||
0
|
||||
5712
|
||||
4330
|
||||
0
|
||||
0
|
||||
9
|
||||
WFileName
|
||||
7
|
||||
os2.tgt
|
||||
0
|
||||
2
|
||||
7
|
||||
28
fstester/getter/os2_32/README.md
Normal file
28
fstester/getter/os2_32/README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
DiscImageChef 32-bit OS/2 Filesystem Getter
|
||||
===========================================
|
||||
This snippet is designed to retrieve all Extended Attributes from all files in the `C:`
|
||||
volume, saving them as a set of COUNTER.EA files in executing directory.
|
||||
|
||||
The format of those files should be as `FEA2LIST` structure (following).
|
||||
It compiles under OpenWatcom.
|
||||
|
||||
```
|
||||
/* FEA2 defines the format for setting the full extended attributes in the file. */
|
||||
|
||||
typedef struct _FEA2 {
|
||||
ULONG oNextEntryOffset; /* Offset to next entry. */
|
||||
BYTE fEA; /* Extended attributes flag. */
|
||||
BYTE cbName; /* Length of szName, not including NULL. */
|
||||
USHORT cbValue; /* Value length. */
|
||||
CHAR szName[1]; /* Extended attribute name. */
|
||||
} FEA2;
|
||||
typedef FEA2 *PFEA2;
|
||||
|
||||
/* FEA2 data structure. */
|
||||
|
||||
typedef struct _FEA2LIST {
|
||||
ULONG cbList; /* Total bytes of structure including full list. */
|
||||
FEA2 list[1]; /* Variable-length FEA2 structures. */
|
||||
} FEA2LIST;
|
||||
typedef FEA2LIST *PFEA2LIST;
|
||||
```
|
||||
Reference in New Issue
Block a user