Initial contribution of the Adaptation Documentation.
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License
"Eclipse Public License v1.0" which accompanies this distribution,
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
Nokia Corporation - initial contribution.
Contributors:
-->
<!DOCTYPE concept
PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-3314123F-205D-5E05-9041-DB9836B7812B" xml:lang="en"><title>File Access Example: Accessing the File System Using P.I.P.S.</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>This example application shows, using a P.I.P.S. (P.I.P.S. Is POSIX
on the Symbian platform) program, the restrictions on file access
that are imposed by the Symbian platform Security model. </p>
<p>It shows that programs can access their own directories, but cannot,
without platform security capabilities not available to ordinary programs,
access the directories of other programs, or the system binary directory <filepath>sys/bin</filepath>. </p>
<p>This example defines an executable file with no platform security
capabilities. The program first creates its own secure directory that
it can write to and read from. It then attempts to use a file in a
private directory of another program, and then in <filepath>sys/bin</filepath>, and shows that these attempts are denied. </p>
<section id="GUID-820F9B58-8877-414B-A18B-B591F6D67158"><title>Download</title> <p>Click on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-2dae3cca-f112-4219-8f7c-6c48682d1f28.zip" scope="external">FileAccessExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-2dae3cca-f112-4219-8f7c-6c48682d1f28.html" scope="peer">browse</xref> to view the example code. </p> </section>
<section id="GUID-3EAFEC43-CFDA-4E3D-8ACD-E3AAE48BE97D"><title>Description</title> <p>The following sections provide more information about the steps
that the example performs. </p> <p><b> Create a secure directory</b> </p> <p>The example creates an empty secure directory for the program
by using the <xref href="GUID-D034B02C-3B45-3DCC-A7DA-E51227032A87.dita"><apiname>mkdir(const char *,mode_t)</apiname></xref> function. </p> <p>This empty secure directory is created in <filepath>C:\private\E80000C9</filepath>, as 0xE80000C9 is a unique identifier for the program (as specified
by the third UID in its project file). </p></section>
<section id="GUID-D9F306FF-D14E-4BCC-BAE6-55804F31CA0D"> <p><b>Write
and read a file in the private directory </b> </p> <p>The example
writes and reads a file in the secure directory using the <xref href="GUID-935A007C-D95C-3EEB-B796-603AF3612A97.dita"><apiname>fopen(const char *, const char *)</apiname></xref> and other file stream
functions. </p> <p><b> Write and read a file in the private directory
of another program </b> </p> <p>The example attempts to write and
read a file in the secure directory of another program. </p> <p>The <xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref> function is expected to return <codeph>NULL</codeph>, indicating that access is not possible, as the program has insufficient
platform security capabilities. </p><p><b> Write and read a file in
the sys/bin directory</b> </p> <p>The example attempts to write and
read a file in the system's <filepath>sys/bin</filepath> directory,
where program binaries are stored. </p> <p>Again, the <xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref> function is expected to return <codeph>NULL</codeph>, indicating
that access is not possible, as the program has insufficient platform
security capabilities. </p> </section>
<section id="GUID-EB4F71F2-D55D-43C5-B55F-F211D170056F"><title>Related
APIs</title><p><xref href="GUID-D034B02C-3B45-3DCC-A7DA-E51227032A87.dita"><apiname>mkdir(const char *,mode_t)</apiname></xref></p><p><xref href="GUID-935A007C-D95C-3EEB-B796-603AF3612A97.dita"><apiname>fopen(const char *, const char *)</apiname></xref></p></section>
<section id="GUID-81AA0C7F-5D43-4EFB-9DD0-4A8A79922576"><title>Build</title> <p>The example builds an executable called <filepath>fileaccessexample.exe</filepath> in the standard locations. </p> <p>To run the example, start <filepath>fileaccessexample.exe</filepath> from the file system or from your
IDE. After launching the executable, depending on the emulator you
are using, you may need to navigate away from the application launcher
or shell screen to view the console. </p> </section>
</conbody></concept>