> For the complete documentation index, see [llms.txt](https://sandbox-docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sandbox-docs.verifone.com/adk-5.0-programmers-guide/readme/files/dir_44d926a17fc606d3c25449ba60427c63/dir_048f823fee1bfb22502a8732b9a001aa/filesystem_8cpp.md).

# filesystem.cpp

[Data Structures](#nested-classes) | [Namespaces](#namespaces) | [Enumerations](#enum-members) | [Functions](#func-members) | [Variables](#var-members)

`#include "`[filesystem.h](/adk-5.0-programmers-guide/filesystem_8h_source.md)`"` `#include <stdio.h>` `#include <stdlib.h>` `#include <string.h>` `#include <unistd.h>` `#include <pwd.h>` `#include <limits.h>` `#include <errno.h>` `#include <sys/types.h>` `#include <sys/stat.h>` `#include <grp.h>` `#include "`[pathutil.h](/adk-5.0-programmers-guide/pathutil_8h_source.md)`"` `#include "`[\_logf.h](/adk-5.0-programmers-guide/__logf_8h_source.md)`"` `#include "`[crypt.h](/adk-5.0-programmers-guide/crypt_8h_source.md)`"` `#include "`[hexutil.h](/adk-5.0-programmers-guide/sdi_2src_2hexutil_8h_source.md)`"` `#include "`[directory.h](/adk-5.0-programmers-guide/directory_8h_source.md)`"` `#include "`[ipc/jsobject.h](/adk-5.0-programmers-guide/ipc_2src_2ipc_2jsobject_8h_source.md)`"` `#include "`[sys.h](/adk-5.0-programmers-guide/sys_8h_source.md)`"` `#include "`[util.h](/adk-5.0-programmers-guide/sdi_2src_2util_8h_source.md)`"` `#include "cardranges.h"` `#include "`[madk\_pp\_protocol.h](/adk-5.0-programmers-guide/madk__pp__protocol_8h_source.md)`"` `#include "`[ui\_mode.h](/adk-5.0-programmers-guide/ui__mode_8h_source.md)`"` `#include "`[emv/EMV\_CT\_Interface.h](/adk-5.0-programmers-guide/_e_m_v___c_t___interface_8h_source.md)`"` `#include "`[emv/EMV\_CTLS\_Interface.h](/adk-5.0-programmers-guide/_e_m_v___c_t_l_s___interface_8h_source.md)`"` `#include "data.h"` `#include "filterconfig.h"` `#include "epp/counterTop.h"` `#include "tar/minitar.h"` `#include "`[loadplugin.h](/adk-5.0-programmers-guide/loadplugin_8h_source.md)`"` `#include "`[sec/libsec.h](/adk-5.0-programmers-guide/libsec_8h_source.md)`"` `#include "gzip/gzip.h"`

Include dependency graph for filesystem.cpp:

![](/files/I5dqThOmeDqmcxxPEZqk)

|                 |                                                                                                                                                 |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| Data Structures |                                                                                                                                                 |
| struct          | [UpdateFiles](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#structsdi_1_1filesystem_1_1_update_files) |

|            |                                                                                                            |
| ---------- | ---------------------------------------------------------------------------------------------------------- |
| Namespaces |                                                                                                            |
|            | [sdi](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi.md)                                        |
|            | [sdi::filesystem](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md) |

|              |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Enumerations |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| enum         | <p><a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43">Location</a> {<br>  <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43a3b40dfe58ff7a5a338c90da1545ec573">LOC\_None</a>, <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43a878e84fff242aa27fa3ec07e9df71ea0">LOC\_SdiFlashDir</a>, <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43aec2d78a615b70e9f406ed59e7e089137">LOC\_SdiConfigDir</a>, <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43ab7bebc1fd312b79d4400b0bd715d837c">LOC\_SdiExtConfigDir</a>,<br>  <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43a2adeec59d3dfd549c01ce9105dce5f5b">LOC\_EmvFlashDir</a>, <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43aa652c98e536a9dd60108b492c7d56501">LOC\_EmvConfigDir</a>, <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43a28744a191aee5516275e3a88c20a0851">LOC\_LogConfigDir</a>, <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43a836a3a9c2556f7f29455d5fc7a9cf19c">LOC\_NfcFlashDir</a>,<br>  <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#aecaf6a9545fa815deb4b8e64e144ce43acfc7b9731795d36feedccae005c07052">LOC\_SdiExtFontsDir</a><br>}</p>                                                                                                                                                                                                                                                                                                                                                          |
| enum         | <p><a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498">Action</a> {<br>  <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498a56fb111b33a737bdddf89dd9568687df">ACT\_None</a> = 0, <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498a3938f7524a0b71efd9adfd59a5f35f83">ACT\_SecInit</a> = (1 << 0), <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498aae9ce02546bfc5b212048612e81b0825">ACT\_DisableEpp</a> = (1 << 1), <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498a531ff0d0f64adc3d9a04d15f268488da">ACT\_EmvExit</a> = (1 << 2),<br>  <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498a1a0540a4bf370403942cf6c61cbf5a3c">ACT\_EmvExitComplete</a> = (1 << 3), <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498af5c01ad9c75206913bc3a8494842e468">ACT\_EmvFlashPerm</a> = (1 << 4), <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498ae62045a4320284f9bc06396b757bf777">ACT\_EmvInitInfo</a> = (1 << 5), <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498a3e449095c7a30b5021d4675cde6d19c3">ACT\_LogInit</a> = (1 << 6),<br>  <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498aeb9762197fdaecdeb2b76f59609636a5">ACT\_CardRanges</a> = (1 << 7), <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498ab4b30277a00cda99b05dac98fe652c2f">ACT\_WhitelistFile</a> = (1 << 8), <a href="/pages/b9dZTBhErJZ7kE7Z3rtu#a8bb1ef53467e4f61410d12822d922498a3b94499f650fd93b67a6d89f1420bcae">ACT\_AclInit</a> = (1 << 9)<br>}</p> |
| enum         | [ActionSource](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a69f0011e8e844cb97a3507c1da3aa656) { [ASRC\_Default](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a69f0011e8e844cb97a3507c1da3aa656a741d7fd60e2d656f4d4b71f9a29e79df) = 0, [ASRC\_Removal](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a69f0011e8e844cb97a3507c1da3aa656a49f1485000653c3415ca12d3b95637c5) = (1 << 0), [ASRC\_PostAction](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a69f0011e8e844cb97a3507c1da3aa656a3c65ad6d8cd1e0a6bcd6852569b3b0d9) = (1 << 1) }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |

|                |                                                                                                                                                                                                                               |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Functions      |                                                                                                                                                                                                                               |
| void           | [factory\_reset](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a12545d574e9182af24a177d1cf453c0c) ()                                                                                |
| void           | [init](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a43918d493a7f56eef174f3c9a82a8e20) (enum config::SdiSysConfig::SDIMode sdi\_mode)                                              |
| bool           | [read\_file](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a141d15606acd013831d2e4ead7765ab5) (const char \*file, string \&data)                                                    |
| bool           | [write\_file](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a3a27a49de579060fada2de1f1fcb72c5) (const char \*file, const string \&data)                                             |
| bool           | [copy\_file](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a738972c314285885ecc6cbf7a864339a) (const string \&src, const string \&dest)                                             |
| bool           | [move\_file](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a5dd1f08cec548612d55ff24e08ae4dcd) (const string \&src, const string \&dst)                                              |
| int            | [get\_dir\_files](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a5800b7dc05dcfb436ec8f8c100757ac7) (const char \*dir, vector< string > \*files, const char \*regex, unsigned modes) |
| int            | [copy\_files](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a8f5d2647f4272f5b555144ad2c9f5239) (const vector< string > \&files, const char \*dst\_dir, unsigned modes)              |
| int            | [remove\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a8241068dfa57d30c7be7a289815533bf) (const string \&path, unsigned modes)                                                |
| int            | [remove\_files](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a95279759f98284266e220092cbb51508) (const vector< string > \&files, unsigned modes)                                   |
| const char \*  | [binary\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a52dd354a0640fd070653611d6de4722b) ()                                                                                   |
| string         | [home\_flash\_file](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#aabc728c4e4c0574111826ca732390cca) (const string \&file)                                                          |
| string         | [home\_config\_file](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#adebb7050fa15bdc4361a3d24f2c6e2f3) (const string \&file)                                                         |
| string         | [lookup\_config\_file](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#aae28890912feff7f83d3af43e35b986c) (const string \&file)                                                       |
| const char \*  | [plugin\_config\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a383b7331d5268ea154c61f4ff4eb6ab8) ()                                                                           |
| int            | [extract\_tar](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a71438e4a73e8ac1cecae82089cd9dded) (const string \&tarfile, const string \&destdir, const char \*regex)                |
| unsigned short | [install\_emv\_config\_package](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a7412f8e8dc1ea4a649358a45031df492) (const string \&emv\_config\_pkg)                                  |
| const char \*  | [home\_flash\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a0de1824701ee8494b54c3c97cb17039b) ()                                                                              |
| const char \*  | [home\_config\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a1eee0f47abbf3108854b4178e194ba45) ()                                                                             |
| const char \*  | [ext\_config\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a1518fc71a30bfab59f82fc1a2726c627) ()                                                                              |
| const char \*  | [emv\_flash\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a817ffa0e3dd4d66ee5a1717aac4c94b8) ()                                                                               |
| const char \*  | [emv\_config\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a65ac0c4801674fbc1832569c7f34457d) ()                                                                              |
| const char \*  | [log\_config\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a1ba2e0d2621785a746e8a2bc2b85bfab) ()                                                                              |
| const char \*  | [nfc\_flash\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a3eb6af6e0de2e982c40979a8282da21b) ()                                                                               |
| const char \*  | [home\_lib\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a98b1808447b0f9e7848b35156a4c7cc9) ()                                                                                |
| const char \*  | [ext\_plugin\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#ae7f61379f5979fbb09444be76ab12a1f) ()                                                                              |
| const char \*  | [ext\_font\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a01f85298159181054db31598024a039e) ()                                                                                |
| const char \*  | [tmp\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a9bc32456ce574dce7e0dbee9f49ed5cd) ()                                                                                      |
| const char \*  | [upload\_install\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a34a571792ddd1cbbe291af193597d9a0) (bool flash)                                                                |
| const char \*  | [sys\_remove\_sponsor\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a6c67d203b4323cce1f3c274d3f2827ee) ()                                                                     |
| const char \*  | [ccp\_resource\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#ac4b7a1244864c6c42d667f71e517c129) ()                                                                            |
| const char \*  | [ccp\_database\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a8705c6880d517d88098ddd7aa1e3716d) ()                                                                            |
| const char \*  | [sdi\_update\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a62f821b6937b4f380d3e22cde31d2920) ()                                                                              |
| const char \*  | [sdi\_persist\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#aeddca685a1e934168171cfef8ef8697e) (bool system)                                                                  |
| const char \*  | [sdi\_certstore\_dir](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#abfa13da98e3a50c8c79f55671a6c71be) ()                                                                           |
| unsigned short | [install\_user\_configuration](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#ad41174b98a363bf48bbcfc62984939ef) (bool recover)                                                      |
| unsigned short | [remove\_user\_configuration](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#abfc178565b6c9e326831f7ef51646744) ()                                                                   |
| unsigned short | [install\_sdi\_plugins](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#af65203b969499e2d36e34c08172a9f30) (bool recover)                                                             |
| unsigned short | [remove\_sdi\_plugins](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#ac42ad54eda4b15aa9d9f2d7bda4a55a5) ()                                                                          |

|                          |                                                                                                                                                                                                                          |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Variables                |                                                                                                                                                                                                                          |
| const struct UpdateFiles | [allowed\_usr\_files](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#af64ea9fc2f13d8f3be606630ef0436cd) \[]                                                                     |
| const unsigned           | [allowed\_usr\_files\_size](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#a8ab079877b3d40867b387ea29bf1db93) = (sizeof(allowed\_usr\_files) / sizeof(allowed\_usr\_files\[0])) |

***

### DataStructure Documentation <a href="#data-structure-documentation" id="data-structure-documentation"></a>

### sdi::filesystem::UpdateFiles <a href="#structsdi_1_1filesystem_1_1_update_files" id="structsdi_1_1filesystem_1_1_update_files"></a>

struct sdi::filesystem::UpdateFiles

update file definition to check for allowed files to update and remove

|                                                                                                                                            |               |                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------- | ------------------------------------------------------------------------------ |
| Data Fields                                                                                                                                |               |                                                                                |
| enum [Location](/adk-5.0-programmers-guide/readme/namespaces/namespacesdi/namespacesdi_1_1filesystem.md#aecaf6a9545fa815deb4b8e64e144ce43) | dest          | destination on terminal, see enum Dest                                         |
| const char \*                                                                                                                              | dest\_prefix  | file prefix (path) used in application folder (if any)                         |
| const char \*                                                                                                                              | file          | name of the update file (without path)                                         |
| unsigned long                                                                                                                              | post\_actions | post-actions (bitmask) to execute for this file after update (see enum Action) |
| unsigned long                                                                                                                              | pre\_actions  | pre-actions (bitmask) to execute for this file before update (see enum Action) |
| const char \*                                                                                                                              | prefix        | file prefix (path) in the user configuration package                           |
| bool                                                                                                                                       | regex         | file is already a regular expression                                           |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://sandbox-docs.verifone.com/adk-5.0-programmers-guide/readme/files/dir_44d926a17fc606d3c25449ba60427c63/dir_048f823fee1bfb22502a8732b9a001aa/filesystem_8cpp.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
