/j/... sandbox works well if files are accessed from J itself. However if
it needs to pass the name of the file to external programs or shared
libraries, then the full path is needed.
On Tue, 22 Feb 2022 at 7:53 AM Ian Clark <[email protected]> wrote:
Bill wrote:
Nevertheless you can hack using the HOME environment variable
Yes, in j901 for iOS …
JVERSION
Engine: j903/j64/iOS
beta-k: GPL3/2022-02-20T16:48:50
Platform: iOS/iPadOS
Version: 901.2 50
Installer: App Store
Contact: www.jsoftware.com
…you can indeed enter:
2!:5'HOME' NB. gets a shadowy long-path...
/Users/ianclark/Library/Containers/BFFFA6CA-80AD-4BF7-A281-B0244C5DA3AD/Data
1!:0 (2!:5'HOME'),'/Documents/j/*'
┌──────┬──────────────────┬───┬───┬──────┬──────────┐
│temp │2022 2 20 16 48 52│96 │rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│tools │2022 2 20 16 48 52│320│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│test │2022 2 20 16 48 52│160│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│config│2022 2 20 16 48 52│96 │rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│addons│2022 2 20 16 48 52│576│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│user │2022 2 20 16 48 52│160│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│slate │2022 2 20 16 48 52│64 │rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│system│2022 2 20 16 48 52│160│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│assets│2022 2 20 16 48 52│832│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│plotf │2022 2 20 16 48 52│64 │rwx│----d-│drwxr-xr-x│
└──────┴──────────────────┴───┴───┴──────┴──────────┘
But that is an unnecessarily roundabout route. The following is
equivalent:
1!:0 'j/*'
┌──────┬──────────────────┬───┬───┬──────┬──────────┐
│temp │2022 2 20 16 48 52│96 │rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│tools │2022 2 20 16 48 52│320│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│test │2022 2 20 16 48 52│160│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│config│2022 2 20 16 48 52│96 │rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│addons│2022 2 20 16 48 52│576│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│user │2022 2 20 16 48 52│160│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│slate │2022 2 20 16 48 52│64 │rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│system│2022 2 20 16 48 52│160│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│assets│2022 2 20 16 48 52│832│rwx│----d-│drwxr-xr-x│
├──────┼──────────────────┼───┼───┼──────┼──────────┤
│plotf │2022 2 20 16 48 52│64 │rwx│----d-│drwxr-xr-x│
└──────┴──────────────────┴───┴───┴──────┴──────────┘
j901 will recognize a "short path" -which is capable of reaching anything
in its sandbox:
1!:0 '*'
┌─────────┬───────────────────┬────┬───┬──────┬──────────┐
│j │2022 2 21 22 40 47 │384 │rwx│----d-│drwxr-xr-x│
└─────────┴───────────────────┴────┴───┴──────┴──────────┘
Note that using a long-path doesn't get round Apple's security. To combat
"jailbreaking", iOS polices long-paths, and intervenes to defeat the
user's
efforts to do anything clever with them, such as string-processing or use
of ../ . There are (of course) no published rules as to how long-paths
are
munged, or when.
…but see:
https://www.nextofwindows.com/how-to-browse-your-ios-devices-file-system-on-windows
https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html
…(The presence of /archive/ warns you that the page may be out of date,
or
no longer represent best practice.)
Yes, as with macOS there is a "bundle" containing the app code and
associated files, but it lies outside the app's sandbox, and iOS defends
it
creatively. If you try hunting for an "~install" path, you'll be chasing
shadows.
You can, however, copy files and folders into the /Documents/ folder as
siblings of j/ , since that's still in your sandbox.
On Mon, 21 Feb 2022 at 13:06, bill lam <[email protected]> wrote:
iOS apps are supposed to run inside sandbox and leaking file system
info
is
discouraged. Nevertheless you can hack using the HOME environment
variable.
try the following
2!:5'HOME'
1!:0 (2!:5'HOME'),'/*'
1!:0 (2!:5'HOME'),'/Documents/*'
1!:0 (2!:5'HOME'),'/Documents/j/*'
On Mon, 21 Feb 2022 at 8:11 PM Richard Donovan <[email protected]>
wrote:
On my iPhone…
jpath'~install'
~install
Which isn’t much help’
________________________________
From: General <[email protected]> on behalf of
bill
lam <[email protected]>
Sent: Monday, February 21, 2022 4:37:15 AM
To: [email protected] <[email protected]>
Subject: Re: [Jgeneral] J903 on Pixel 6 Pro (Android)
the install folder on any platform can be found by
jpath'~install'
on android it is
/storage/emulated/0/Android/data/com.jsoftware.j.android/files
On 20 Feb 2022, at 1:58 AM, J. Patrick Harrington <[email protected]>
wrote:
I just recently replaced my old iPhone (a 6 Plus) with a new Google
Pixel 6 Pro.
It seems to be an impressive phone with a great camera. One of my
motivations for not getting a newer iPhone was my desire to escape
the
increasingly locked-down Apple philosophy. I had problems moving
files
back
and forth between my linux computer and the phone. I'm glad to report
that
I had no particular difficulty installing J903 on the Pixel 6. The
file
locations are cumbersome; you need something like
Apath=:
'/storage/emulated/0/Android/data/com.jsoftware.j.android/files/'
in your startup profile. But the good news is that you just need a
USB
C
cable between your Pixel and computer and you just drag and drop
files
to
transfer them back and forth. I used to test the speed of J on phones
by
inverting a 500 x 500 matrix -- on my old iPhone it took 0.5 sec, but
on
this Pixel it's down to 0.046 sec. (Need to use a larger matrix, e.g.
1000
x 1000 -> 0.37 sec.) It took a bit of fussing to install the Dykman
keyboard but now its there and works great. I noticed there was a 2nd
keyboard available but I haven't tried it. How does it differ? I must
say
that though I ran J programs on the iPhone, I seldom developed
anything
on
it. But J903 on this Pixel 6 is so smooth that I've started writing
(short)
routines on it and copying them back to the laptop.
My real reason for writing this report is ask for pointers to any
discussions regarding J on android phones. The android OS is
completely
new
to me. One glitch I encountered was when I modified a J routine with
a
text
editor I'd installed on the Pixel. I got a strange file read error.
It
looked like the editor did something invisible to the file that
ruined
the
J session -- all my definitions were gone and I had to kill J and
restart.
But if I made the file changes on the laptop and ported the file
over,
it
was fine. Any suggestions for a good text editor for android? (I'm an
old
school vi guy, but I've not found a good plane vi.)
Anyway, I appreciate any pointers of discussions of J on android...
Patrick
----------------------------------------------------------------------
For information about J forums see
http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see
http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see
http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm