delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2012/08/21/03:00:55

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: "Rod Pemberton" <do_not_have AT notemailnot DOT cmm>
Newsgroups: comp.os.msdos.djgpp
Subject: p7zip 9.20.1 cross-compiled by Rugxulo
Date: Tue, 21 Aug 2012 02:52:12 -0400
Organization: Aioe.org NNTP Server
Lines: 61
Message-ID: <k0vb24$52a$1@speranza.aioe.org>
NNTP-Posting-Host: CNsg4fVcCsvs3UaOgZtQCw.user.speranza.aioe.org
X-Complaints-To: abuse AT aioe DOT org
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.2001
X-Notice: Filtered by postfilter v. 0.8.2
X-Newsreader: Microsoft Outlook Express 6.00.2800.2001
X-Priority: 3
X-MSMail-Priority: Normal
Bytes: 2862
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Elsewhere, Rugxulo posted p7zip 9.20.1 cross-compiled for DOS using DJGPP:
http://www.bttr-software.de/forum/forum_entry.php?id=11710

But, he may need our help:

"Bug? It still relies on *nix-style forward slashes '/'
in dir paths, which is bad, but I couldn't find a solution
that actually fixed it (tried and failed, sadly)."

There could be many locations that need changing to fix path separators in
p7zip 9.20.1 for DOS.  But, I'd think that only the separators already
adjusted for Win32 would need to be added for DJGPP.  I.e., I think for
Win32 it converts between *nix-style slashes and Windows.  A search
finds only four p7zip files where the separator is adjusted in Win32 #ifdef
sections:

  FilePathAutoRename.cpp in AutoRenamePath()
  7zUpdate.cpp in GetReverseSlashPos()
  Wildcard.cpp
  Types.h

I'd guess that adding DJGPP to those Win32 #ifdef's would fix the problem.
This is just like you did for your other fixes in the diff files.  If it
doesn't, try fixing the '/' in FileFind.cpp and FileDir.cpp.  Next, maybe
try adding '/' in DmgHandler.cpp which has '\' but no '/'.

There are many more locations, about 17 more, but Win32 hasn't modified
those locations either.  Search for '/' or "slash", if needed.

Also, you'll probably need or want some of DJGPP's CRT0 flags to be added in
files with C's main():

#ifdef DJGPP
int _crt0_startup_flags = _CRT0_FLAG_USE_DOS_SLASHES
                        | _CRT0_FLAG_KEEP_QUOTES
                        | _CRT0_FLAG_PRESERVE_UPPER_CASE
                        | _CRT0_FLAG_PRESERVE_FILENAME_CASE
                        | _CRT0_FLAG_DISALLOW_RESPONSE_FILES;
char ** __crt0_glob_function(char *arg) { return (char **)0; }
void   __crt0_load_environment_file(char *app_name) {}
#endif

Those will help pass DOS path's correctly.

Client7z.cpp seems to have the main application main(), but main() is also
in:

  LzmaAlone.cpp
  ClientCodec.cpp
  wine_GetXXXDefaultLang.cpp
  test_emul.cpp
  my_86_filter.cpp

HTH and hope you see this,


Rod Pemberton



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019