mirror of
https://github.com/aaru-dps/fstester.git
synced 2025-12-16 19:24:39 +00:00
Add filesystem tester snippet for retrieving OS/2 EAs.
This commit is contained in:
8
README.md
Normal file
8
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
getter/README.md
Normal file
8
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
getter/os2_32/DIR.C
Normal file
228
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
getter/os2_32/DIR.H
Normal file
37
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
getter/os2_32/EA.C
Normal file
93
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
getter/os2_32/EA.H
Normal file
41
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
getter/os2_32/MAIN.C
Normal file
46
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
getter/os2_32/MAIN.H
Normal file
38
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
getter/os2_32/OS2.EXE
Executable file
BIN
getter/os2_32/OS2.EXE
Executable file
Binary file not shown.
2
getter/os2_32/OS2.LK1
Normal file
2
getter/os2_32/OS2.LK1
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
FIL dir.obj,ea.obj,main.obj
|
||||||
|
|
||||||
326
getter/os2_32/OS2.MAP
Normal file
326
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
getter/os2_32/OS2.MK
Normal file
3
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
getter/os2_32/OS2.MK1
Normal file
35
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
getter/os2_32/OS2.SYM
Normal file
BIN
getter/os2_32/OS2.SYM
Normal file
Binary file not shown.
238
getter/os2_32/OS2.TGT
Normal file
238
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
getter/os2_32/OS2.WPJ
Normal file
43
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
getter/os2_32/README.md
Normal file
28
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