Sophie

Sophie

distrib > Fedora > 17 > i386 > by-pkgid > eb9952e0ae9ee158f30292ed99dc91f2 > files > 68

gfal2-doc-2.1.1-0.fc17.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>CERN GFAL 2.0: POSIX-like API</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">CERN GFAL 2.0
   &#160;<span id="projectnumber">2.0.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">POSIX-like API</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga6aa4e9a1dd57e8d58a53e1a3dd3cdf66"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga6aa4e9a1dd57e8d58a53e1a3dd3cdf66">gfal_chmod</a> (const char *url, mode_t mode)</td></tr>
<tr class="memdesc:ga6aa4e9a1dd57e8d58a53e1a3dd3cdf66"><td class="mdescLeft">&#160;</td><td class="mdescRight">change file access permissions  <a href="#ga6aa4e9a1dd57e8d58a53e1a3dd3cdf66"></a><br/></td></tr>
<tr class="memitem:ga97909aaf76cda4966a019190be091439"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga97909aaf76cda4966a019190be091439">gfal_rename</a> (const char *oldurl, const char *newurl)</td></tr>
<tr class="memdesc:ga97909aaf76cda4966a019190be091439"><td class="mdescLeft">&#160;</td><td class="mdescRight">change the name or location of a file  <a href="#ga97909aaf76cda4966a019190be091439"></a><br/></td></tr>
<tr class="memitem:ga4b18c9bed445f15b427ad26bee6a2fcd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga4b18c9bed445f15b427ad26bee6a2fcd">gfal_stat</a> (const char *url, struct stat *st)</td></tr>
<tr class="memdesc:ga4b18c9bed445f15b427ad26bee6a2fcd"><td class="mdescLeft">&#160;</td><td class="mdescRight">get the file status, follow links  <a href="#ga4b18c9bed445f15b427ad26bee6a2fcd"></a><br/></td></tr>
<tr class="memitem:ga5fffc628b5295597cd00e49d43aa1b32"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga5fffc628b5295597cd00e49d43aa1b32">gfal_lstat</a> (const char *url, struct stat *st)</td></tr>
<tr class="memdesc:ga5fffc628b5295597cd00e49d43aa1b32"><td class="mdescLeft">&#160;</td><td class="mdescRight">get the file status, does not follow links  <a href="#ga5fffc628b5295597cd00e49d43aa1b32"></a><br/></td></tr>
<tr class="memitem:ga565bc08cbd4c135f18517edc76cc3285"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga565bc08cbd4c135f18517edc76cc3285">gfal_access</a> (const char *url, int amode)</td></tr>
<tr class="memdesc:ga565bc08cbd4c135f18517edc76cc3285"><td class="mdescLeft">&#160;</td><td class="mdescRight">check user permissions for a file  <a href="#ga565bc08cbd4c135f18517edc76cc3285"></a><br/></td></tr>
<tr class="memitem:ga1c0177f7b54b135ab1c658402170e984"><td class="memItemLeft" align="right" valign="top">ssize_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga1c0177f7b54b135ab1c658402170e984">gfal_readlink</a> (const char *url, char *buff, size_t buffsiz)</td></tr>
<tr class="memdesc:ga1c0177f7b54b135ab1c658402170e984"><td class="mdescLeft">&#160;</td><td class="mdescRight">resolve a link destination  <a href="#ga1c0177f7b54b135ab1c658402170e984"></a><br/></td></tr>
<tr class="memitem:ga0e57a6e75e750aa134622a229653a04d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga0e57a6e75e750aa134622a229653a04d">gfal_symlink</a> (const char *oldurl, const char *newurl)</td></tr>
<tr class="memdesc:ga0e57a6e75e750aa134622a229653a04d"><td class="mdescLeft">&#160;</td><td class="mdescRight">create a symbolic link  <a href="#ga0e57a6e75e750aa134622a229653a04d"></a><br/></td></tr>
<tr class="memitem:gadda0ae0dccc4b86c57b36f77fea4a1e3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gadda0ae0dccc4b86c57b36f77fea4a1e3">gfal_unlink</a> (const char *url)</td></tr>
<tr class="memdesc:gadda0ae0dccc4b86c57b36f77fea4a1e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">unlink a file, delete it  <a href="#gadda0ae0dccc4b86c57b36f77fea4a1e3"></a><br/></td></tr>
<tr class="memitem:gaa6fce920a24431301bf9eb8876f66f88"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gaa6fce920a24431301bf9eb8876f66f88">gfal_mkdir</a> (const char *url, mode_t mode)</td></tr>
<tr class="memdesc:gaa6fce920a24431301bf9eb8876f66f88"><td class="mdescLeft">&#160;</td><td class="mdescRight">create a directory  <a href="#gaa6fce920a24431301bf9eb8876f66f88"></a><br/></td></tr>
<tr class="memitem:ga9d5fa1c2be9e9eb74674ab3dbb99064a"><td class="memItemLeft" align="right" valign="top">DIR *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga9d5fa1c2be9e9eb74674ab3dbb99064a">gfal_opendir</a> (const char *url)</td></tr>
<tr class="memdesc:ga9d5fa1c2be9e9eb74674ab3dbb99064a"><td class="mdescLeft">&#160;</td><td class="mdescRight">open a directory  <a href="#ga9d5fa1c2be9e9eb74674ab3dbb99064a"></a><br/></td></tr>
<tr class="memitem:ga8240a349905964a30790d7046bafde2d"><td class="memItemLeft" align="right" valign="top">struct dirent *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga8240a349905964a30790d7046bafde2d">gfal_readdir</a> (DIR *d)</td></tr>
<tr class="memdesc:ga8240a349905964a30790d7046bafde2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">read a directory  <a href="#ga8240a349905964a30790d7046bafde2d"></a><br/></td></tr>
<tr class="memitem:gaa218c7cd8ce894f8644494917ab5ef41"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gaa218c7cd8ce894f8644494917ab5ef41">gfal_closedir</a> (DIR *d)</td></tr>
<tr class="memdesc:gaa218c7cd8ce894f8644494917ab5ef41"><td class="mdescLeft">&#160;</td><td class="mdescRight">close a directory  <a href="#gaa218c7cd8ce894f8644494917ab5ef41"></a><br/></td></tr>
<tr class="memitem:ga06d9c5cfadb171f1ec10c64ff1a5b94a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga06d9c5cfadb171f1ec10c64ff1a5b94a">gfal_rmdir</a> (const char *url)</td></tr>
<tr class="memdesc:ga06d9c5cfadb171f1ec10c64ff1a5b94a"><td class="mdescLeft">&#160;</td><td class="mdescRight">delete a directory  <a href="#ga06d9c5cfadb171f1ec10c64ff1a5b94a"></a><br/></td></tr>
<tr class="memitem:ga742a8836f01853c31e1392164cd81b34"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga742a8836f01853c31e1392164cd81b34">gfal_creat</a> (const char *url, mode_t mode)</td></tr>
<tr class="memdesc:ga742a8836f01853c31e1392164cd81b34"><td class="mdescLeft">&#160;</td><td class="mdescRight">creat a file  <a href="#ga742a8836f01853c31e1392164cd81b34"></a><br/></td></tr>
<tr class="memitem:gace61299f028a53738792d67c166433d5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gace61299f028a53738792d67c166433d5">gfal_open</a> (const char *url, int flags,...)</td></tr>
<tr class="memdesc:gace61299f028a53738792d67c166433d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">open a file  <a href="#gace61299f028a53738792d67c166433d5"></a><br/></td></tr>
<tr class="memitem:ga139639a4613901770b89edd2e0c6c118"><td class="memItemLeft" align="right" valign="top">off_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga139639a4613901770b89edd2e0c6c118">gfal_lseek</a> (int fd, off_t off, int flags)</td></tr>
<tr class="memdesc:ga139639a4613901770b89edd2e0c6c118"><td class="mdescLeft">&#160;</td><td class="mdescRight">reposition read/write file offset  <a href="#ga139639a4613901770b89edd2e0c6c118"></a><br/></td></tr>
<tr class="memitem:gad6751ad14ea731518b298cdf58701ed0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gad6751ad14ea731518b298cdf58701ed0">gfal_close</a> (int fd)</td></tr>
<tr class="memdesc:gad6751ad14ea731518b298cdf58701ed0"><td class="mdescLeft">&#160;</td><td class="mdescRight">close a gfal file descriptor  <a href="#gad6751ad14ea731518b298cdf58701ed0"></a><br/></td></tr>
<tr class="memitem:ga8eb2fe8a19bef9f341ac4f986b082136"><td class="memItemLeft" align="right" valign="top">ssize_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga8eb2fe8a19bef9f341ac4f986b082136">gfal_read</a> (int fd, void *buff, size_t size)</td></tr>
<tr class="memdesc:ga8eb2fe8a19bef9f341ac4f986b082136"><td class="mdescLeft">&#160;</td><td class="mdescRight">read from a gfal file descriptor  <a href="#ga8eb2fe8a19bef9f341ac4f986b082136"></a><br/></td></tr>
<tr class="memitem:gafe7ed132ad1c8d93f73f59d7dfd94940"><td class="memItemLeft" align="right" valign="top">ssize_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gafe7ed132ad1c8d93f73f59d7dfd94940">gfal_write</a> (int fd, const void *buff, size_t size)</td></tr>
<tr class="memdesc:gafe7ed132ad1c8d93f73f59d7dfd94940"><td class="mdescLeft">&#160;</td><td class="mdescRight">write from a gfal file descriptor  <a href="#gafe7ed132ad1c8d93f73f59d7dfd94940"></a><br/></td></tr>
<tr class="memitem:ga925530ca7dd7b025b84a3ec16006048d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga925530ca7dd7b025b84a3ec16006048d">gfal_flush</a> (int fd)</td></tr>
<tr class="memdesc:ga925530ca7dd7b025b84a3ec16006048d"><td class="mdescLeft">&#160;</td><td class="mdescRight">flush the given file descriptor  <a href="#ga925530ca7dd7b025b84a3ec16006048d"></a><br/></td></tr>
<tr class="memitem:ga33e9dc761cc381b16b4bf4849a60d5a6"><td class="memItemLeft" align="right" valign="top">ssize_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga33e9dc761cc381b16b4bf4849a60d5a6">gfal_pread</a> (int fd, void *buff, size_t size, off_t offset)</td></tr>
<tr class="memdesc:ga33e9dc761cc381b16b4bf4849a60d5a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">parallel read from a gfal file descriptor  <a href="#ga33e9dc761cc381b16b4bf4849a60d5a6"></a><br/></td></tr>
<tr class="memitem:gab1287071e68fd0a468cdf944c49094af"><td class="memItemLeft" align="right" valign="top">ssize_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gab1287071e68fd0a468cdf944c49094af">gfal_pwrite</a> (int fd, const void *buff, size_t size, off_t offset)</td></tr>
<tr class="memdesc:gab1287071e68fd0a468cdf944c49094af"><td class="mdescLeft">&#160;</td><td class="mdescRight">parallel write from a gfal file descriptor  <a href="#gab1287071e68fd0a468cdf944c49094af"></a><br/></td></tr>
<tr class="memitem:gad63c597496455de9b17cb28b724b16dc"><td class="memItemLeft" align="right" valign="top">ssize_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gad63c597496455de9b17cb28b724b16dc">gfal_getxattr</a> (const char *url, const char *name, void *value, size_t size)</td></tr>
<tr class="memdesc:gad63c597496455de9b17cb28b724b16dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">retrieve an extended attribute value  <a href="#gad63c597496455de9b17cb28b724b16dc"></a><br/></td></tr>
<tr class="memitem:ga2b9f28d72b4daf8e771e85cdce6e8a3c"><td class="memItemLeft" align="right" valign="top">ssize_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga2b9f28d72b4daf8e771e85cdce6e8a3c">gfal_listxattr</a> (const char *url, char *list, size_t size)</td></tr>
<tr class="memdesc:ga2b9f28d72b4daf8e771e85cdce6e8a3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">retrieve a list of the extended attributes availables  <a href="#ga2b9f28d72b4daf8e771e85cdce6e8a3c"></a><br/></td></tr>
<tr class="memitem:gaeef33a2b41a726d3f9da05f872197b09"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gaeef33a2b41a726d3f9da05f872197b09">gfal_setxattr</a> (const char *url, const char *name, const void *value, size_t size, int flags)</td></tr>
<tr class="memdesc:gaeef33a2b41a726d3f9da05f872197b09"><td class="mdescLeft">&#160;</td><td class="mdescRight">define an extended attribute value  <a href="#gaeef33a2b41a726d3f9da05f872197b09"></a><br/></td></tr>
<tr class="memitem:ga8c35f27b85007207bf4c838278b38ae2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga8c35f27b85007207bf4c838278b38ae2">gfal_removexattr</a> (const char *url, const char *name)</td></tr>
<tr class="memdesc:ga8c35f27b85007207bf4c838278b38ae2"><td class="mdescLeft">&#160;</td><td class="mdescRight">delete a extended attribute value  <a href="#ga8c35f27b85007207bf4c838278b38ae2"></a><br/></td></tr>
<tr class="memitem:gac937c592821b1f2f7686c576e2594cba"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error</a> ()</td></tr>
<tr class="memitem:ga0fbf5e61ffa27cf45c643a1943a1f4ef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga0fbf5e61ffa27cf45c643a1943a1f4ef">gfal_posix_clear_error</a> ()</td></tr>
<tr class="memitem:gaaf98256d0272f750eca98ac3b86d2c80"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gaaf98256d0272f750eca98ac3b86d2c80">gfal_posix_release_error</a> ()</td></tr>
<tr class="memitem:ga3ba7d2031bf6c389002a9ccd2f4715ce"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga3ba7d2031bf6c389002a9ccd2f4715ce">gfal_posix_strerror_r</a> (char *buff_err, size_t s_err)</td></tr>
<tr class="memitem:ga1a6354be6455622730969cc2e430688e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga1a6354be6455622730969cc2e430688e">gfal_posix_print_error</a> ()</td></tr>
<tr class="memitem:ga867dc8a4bae4912b86a9abf77082a17a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga867dc8a4bae4912b86a9abf77082a17a">gfal_posix_code_error</a> ()</td></tr>
<tr class="memitem:ga436a6ea0bf30fba5ea242d729b0ce67f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga436a6ea0bf30fba5ea242d729b0ce67f">gfal_set_verbose</a> (int)</td></tr>
<tr class="memitem:ga9dac4cce5aedb7bf547d81f1797cdb4b"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#ga9dac4cce5aedb7bf547d81f1797cdb4b">gfal_version</a> ()</td></tr>
<tr class="memitem:gace9fa2da50fef66ac46e6bf8f3268e1d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="gfal__global_8h.html#a3653ff2b8bf7affda4dfcf66af8d1632">gfal2_context_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix__group.html#gace9fa2da50fef66ac46e6bf8f3268e1d">gfal_posix_get_context</a> ()</td></tr>
<tr class="memdesc:gace9fa2da50fef66ac46e6bf8f3268e1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">get context for advanced operation return the gfal2 context used for POSIX operations allow to do advanced operation ( config, checksum, transfer ) on this context  <a href="#gace9fa2da50fef66ac46e6bf8f3268e1d"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga565bc08cbd4c135f18517edc76cc3285"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_access </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>amode</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>check user permissions for a file </p>
<p>Similar behavior to the POSIX access ( man 2 access )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file to access </td></tr>
    <tr><td class="paramname">amode</td><td>: access mode to check (R_OK, W_OK, X_OK or F_OK) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return 0 if the operation was successful, or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testchmod_8c-example.html#a0">gfal_testchmod.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6aa4e9a1dd57e8d58a53e1a3dd3cdf66"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_chmod </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">mode_t&#160;</td>
          <td class="paramname"><em>mode</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>change file access permissions </p>
<p>Warnings about POSIX functions : some protocols do not permit a full POSIX support ( ex : no symlinks in srm:// URLs ) In case of a call to a unsupported function, -1 code is return and an error is set to EPROTONOSUPPORT</p>
<pre class="fragment">gfal_chmod changes the permissions of each given file according to mode,
Similar behavior to the POSIX chmod ( man 2 chmod )
</pre><dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file or the folder, can be in all supported protocols (lfn, srm, file, guid,..) </td></tr>
    <tr><td class="paramname">mode</td><td>: right to configure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>return 0 if success else -1 if errors occures. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testchmod_8c-example.html#a2">gfal_testchmod.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad6751ad14ea731518b298cdf58701ed0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_close </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>close a gfal file descriptor </p>
<p>Similar behavior to the POSIX close ( man 2 close )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>: gfal file descriptor of the file </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return 0 if the operation is a success or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testread_8c-example.html#a3">gfal_testread.c</a>, and <a class="el" href="gfal_testrw_8c-example.html#a3">gfal_testrw.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa218c7cd8ce894f8644494917ab5ef41"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_closedir </td>
          <td>(</td>
          <td class="paramtype">DIR *&#160;</td>
          <td class="paramname"><em>d</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>close a directory </p>
<p>Similar behavior to the POSIX closedir ( man 2 closedir )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: descriptor of the directory </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return 0 if the operation was successful, or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testdir_8c-example.html#a2">gfal_testdir.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga742a8836f01853c31e1392164cd81b34"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_creat </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">mode_t&#160;</td>
          <td class="paramname"><em>mode</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>creat a file </p>
<p>Similar behavior to the POSIX creat ( man 2 creat ) gfal_creat is similar to <a class="el" href="group__posix__group.html#gace61299f028a53738792d67c166433d5">gfal_open</a> with the flags O_CREAT|O_WRONLY|O_TRUNC</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file to creat </td></tr>
    <tr><td class="paramname">mode</td><td>: mode of the file. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return a valid file descriptor if the operation is a success or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="ga925530ca7dd7b025b84a3ec16006048d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_flush </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>flush the given file descriptor </p>
<p>flush the current fiel descriptor, clear the cache \ and commit the changes. This call is reserved fora futur usage.</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>: gfal file descriptor of the file </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>On success, return 0. In case of errors, -1 is returned see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="gad63c597496455de9b17cb28b724b16dc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssize_t gfal_getxattr </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>retrieve an extended attribute value </p>
<p>similar to the getxattr function</p>
<p>In gfal 2.0, this is the standard way to interact \ with advanced file properties</p>
<p>ex : gfal_getxattr("srm://myurl/endpoint", "user.replicas", buff, 256);</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file </td></tr>
    <tr><td class="paramname">name</td><td>: key of the extended attribute </td></tr>
    <tr><td class="paramname">value</td><td>: buffer for the extended attribute value </td></tr>
    <tr><td class="paramname">size</td><td>: maximum size of the buffer </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>On success, return the size of the extended attribute. In case of errors, -1 is returned see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testget_8c-example.html#a1">gfal_testget.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga2b9f28d72b4daf8e771e85cdce6e8a3c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssize_t gfal_listxattr </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>retrieve a list of the extended attributes availables </p>
<p>similar to the etxattr function</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file </td></tr>
    <tr><td class="paramname">list</td><td>: buffer for the list of availables attributes concatened. </td></tr>
    <tr><td class="paramname">size</td><td>: maximum size of the buffer </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>On success, return the size of the list. In case of errors, -1 is returned see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="ga139639a4613901770b89edd2e0c6c118"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">off_t gfal_lseek </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">off_t&#160;</td>
          <td class="paramname"><em>off</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>reposition read/write file offset </p>
<p>Similar behavior to the POSIX lseek ( man 2 lseek )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>: gfal file descriptor of the file </td></tr>
    <tr><td class="paramname">off</td><td>: offset to set </td></tr>
    <tr><td class="paramname">flags</td><td>: offset mode </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return the current offset if the operation is a success or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="ga5fffc628b5295597cd00e49d43aa1b32"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_lstat </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct stat *&#160;</td>
          <td class="paramname"><em>st</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>get the file status, does not follow links </p>
<p>return informations about the given files and links Similar behavior to the POSIX lstat ( man 2 lstat )</p>
<p>In case of protocols without the support of links, GFAL 2.0 \ convert this call to <a class="el" href="group__posix__group.html#ga4b18c9bed445f15b427ad26bee6a2fcd">gfal_stat</a></p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file </td></tr>
    <tr><td class="paramname">st</td><td>: pointer to an allocated struct stat </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>: return 0 if success, else -1 if errors. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="gaa6fce920a24431301bf9eb8876f66f88"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_mkdir </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">mode_t&#160;</td>
          <td class="paramname"><em>mode</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>create a directory </p>
<p>Similar behavior to the POSIX mkdir( man 2 mkdir )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the directory to create </td></tr>
    <tr><td class="paramname">mode</td><td>: initial mode right of the directory </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return 0 if the operation was successful, or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testcreatedir_8c-example.html#a0">gfal_testcreatedir.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gace61299f028a53738792d67c166433d5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_open </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>open a file </p>
<p>Similar behavior to the POSIX open ( man 2 open ) gfal_open supports the same flags than the POSIX open call</p>
<p>O_TRUNC If the file already exists and is a regular file and the open mode allows writing (i.e., is O_RDWR or O_WRONLY) it will be truncated to length 0. If the file is a FIFO or termi‐ nal device file, the O_TRUNC flag is ignored. Otherwise the effect of O_TRUNC is unspecified.</p>
<p>O_APPEND The file is opened in append mode. Before each write(2), the file offset is positioned at the end of the file, as if with lseek(2). O_APPEND may lead to corrupted files on NFS file systems if more than one process appends data to a file at once. This is because NFS does not support appending to a file, so the client kernel has to simulate it, which can't be done without a race condition.</p>
<p>O_CREAT If the file does not exist it will be created. The owner (user ID) of the file is set to the effective user ID of the process. The group ownership (group ID) is set either to the effective group ID of the process or to the group ID of the parent directory (depending on file system type and mount options, and the mode of the parent directory, see the mount options bsdgroups and sysvgroups described in mount(8)).</p>
<p>mode specifies the permissions to use in case a new file is created. This argument must be supplied when O_CREAT is specified in flags; if O_CREAT is not specified, then mode is ignored. The effective permissions are modified by the process's umask in the usual way: The permissions of the created file are (mode &amp; ~umask). Note that this mode only applies to future accesses of the newly created file; the open() call that creates a read-only file may well return a read/write file descriptor.</p>
<p>O_DIRECT Try to minimize cache effects of the I/O to and from this file. In general this will degrade performance, but it is useful in special situations, such as when applications do their own caching. File I/O is done directly to/from user space buffers. The O_DIRECT flag on its own makes at an effort to transfer data synchronously, but does not give the guarantees of the O_SYNC that data and necessary metadata are transferred. To guarantee synchronous I/O the O_SYNC must be used in addition to O_DIRECT. See NOTES below for fur‐ ther discussion.</p>
<p>O_LARGEFILE (LFS) Allow files whose sizes cannot be represented in an off_t (but can be represented in an off64_t) to be opened. The _LARGEFILE64_SOURCE macro must be defined (before includ‐ ing any header files) in order to obtain this definition. Setting the _FILE_OFFSET_BITS feature test macro to 64 (rather than using O_LARGEFILE) is the preferred method of obtaining method of accessing large files on 32-bit systems</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file to open </td></tr>
    <tr><td class="paramname">flags</td><td>: flags to use ( similar to open ) </td></tr>
    <tr><td class="paramname">mode</td><td>(optional) : mode of the file in case of a new file. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return a valid file descriptor if the operation is a success or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testread_8c-example.html#a0">gfal_testread.c</a>, and <a class="el" href="gfal_testrw_8c-example.html#a0">gfal_testrw.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9d5fa1c2be9e9eb74674ab3dbb99064a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DIR* gfal_opendir </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>open a directory </p>
<p>Similar behavior to the POSIX opendir ( man 2 opendir )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the directory to list </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return a directory descriptor if the operation was successful, or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testdir_8c-example.html#a0">gfal_testdir.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac937c592821b1f2f7686c576e2594cba"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_posix_check_error </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>safe and easy error management : -&gt; if last error -&gt; print on stderr, return 1 -&gt; else do nothing </p>
<dl class="section return"><dt>Returns:</dt><dd>0 if no error, 1 else </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testchmod_8c-example.html#a1">gfal_testchmod.c</a>, <a class="el" href="gfal_testcreatedir_8c-example.html#a1">gfal_testcreatedir.c</a>, <a class="el" href="gfal_testget_8c-example.html#a2">gfal_testget.c</a>, <a class="el" href="gfal_testread_8c-example.html#a1">gfal_testread.c</a>, and <a class="el" href="gfal_testrw_8c-example.html#a1">gfal_testrw.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga0fbf5e61ffa27cf45c643a1943a1f4ef"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void gfal_posix_clear_error </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>clear the last error \ provided for convenience. </p>

</div>
</div>
<a class="anchor" id="ga867dc8a4bae4912b86a9abf77082a17a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_posix_code_error </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>return the code associated with the last error. In case of POSIX calls and when possible, this code is similar to the local errno </p>
<dl class="section return"><dt>Returns:</dt><dd>last error code or 0 if nothing </dd></dl>

</div>
</div>
<a class="anchor" id="gace9fa2da50fef66ac46e6bf8f3268e1d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="gfal__global_8h.html#a3653ff2b8bf7affda4dfcf66af8d1632">gfal2_context_t</a> gfal_posix_get_context </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>get context for advanced operation return the gfal2 context used for POSIX operations allow to do advanced operation ( config, checksum, transfer ) on this context </p>
<dl class="section warning"><dt>Warning:</dt><dd>Delete this context leads to undefined behavior. </dd></dl>

</div>
</div>
<a class="anchor" id="ga1a6354be6455622730969cc2e430688e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void gfal_posix_print_error </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>display the last error recorded to the standard output, provided for convenience. </p>

</div>
</div>
<a class="anchor" id="gaaf98256d0272f750eca98ac3b86d2c80"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void gfal_posix_release_error </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>display the last error to the standard output \ and clear it. provided for convenience. </p>

</div>
</div>
<a class="anchor" id="ga3ba7d2031bf6c389002a9ccd2f4715ce"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* gfal_posix_strerror_r </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buff_err</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>s_err</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Get the string representation of the last error </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">buff_err</td><td>: buffer where string representation will be stored. </td></tr>
    <tr><td class="paramname">s_err</td><td>: maximum message size </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>return pointer to buff_err for convenience </dd></dl>

</div>
</div>
<a class="anchor" id="ga33e9dc761cc381b16b4bf4849a60d5a6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssize_t gfal_pread </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">off_t&#160;</td>
          <td class="paramname"><em>offset</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>parallel read from a gfal file descriptor </p>
<p>Similar behavior to the POSIX pread ( man 2 pread )</p>
<p>In gfal 2.0, this call is thread-safe and allows the usage of \ parallels read at the same time on the same file descriptor.</p>
<p>This is the recommended way to execute parallels transfers.</p>
<p>This gfal_pread is emulated on filesystem that does not support it explicitely ( ex : rfio )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>: gfal file descriptor of the file </td></tr>
    <tr><td class="paramname">buff</td><td>: buffer for the read content </td></tr>
    <tr><td class="paramname">size</td><td>: maximum size to read </td></tr>
    <tr><td class="paramname">offset</td><td>: offset where the read start </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>On success, the number of bytes read is returned (zero indicates end of file), and the file position is advanced by this number. It is not an error if this number is smaller than the number of bytes requested.In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="gab1287071e68fd0a468cdf944c49094af"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssize_t gfal_pwrite </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">off_t&#160;</td>
          <td class="paramname"><em>offset</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>parallel write from a gfal file descriptor </p>
<p>Similar behavior to the POSIX pwrite ( man 2 pwrite )</p>
<p>In gfal 2.0, this function is thread-safe and allows the usage of parallels write at the same time on the same file descriptor.</p>
<p>This is the recommended way to execute parallels transfers.</p>
<p>This gfal_pwrite is emulated on filesystem that does not support it explicitely ( ex : rfio )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>: gfal file descriptor of the file </td></tr>
    <tr><td class="paramname">buff</td><td>: buffer for the write content </td></tr>
    <tr><td class="paramname">size</td><td>: maximum size to write </td></tr>
    <tr><td class="paramname">offset</td><td>: offset where the write start </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>On success, the number of bytes read is returned (zero indicates end of file), and the file position is advanced by this number. It is not an error if this number is smaller than the number of bytes requested.In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="ga8eb2fe8a19bef9f341ac4f986b082136"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssize_t gfal_read </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>read from a gfal file descriptor </p>
<p>Similar behavior to the POSIX read ( man 2 read )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>: gfal file descriptor of the file </td></tr>
    <tr><td class="paramname">buff</td><td>: buffer for the read content </td></tr>
    <tr><td class="paramname">size</td><td>: maximum size to read </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>On success, the number of bytes read is returned (zero indicates end of file), and the file position is advanced by this number. It is not an error if this number is smaller than the number of bytes requested.In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testread_8c-example.html#a2">gfal_testread.c</a>, and <a class="el" href="gfal_testrw_8c-example.html#a4">gfal_testrw.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga8240a349905964a30790d7046bafde2d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">struct dirent* gfal_readdir </td>
          <td>(</td>
          <td class="paramtype">DIR *&#160;</td>
          <td class="paramname"><em>d</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>read a directory </p>
<p>the directory descriptor must be provided by <a class="el" href="group__posix__group.html#ga9d5fa1c2be9e9eb74674ab3dbb99064a">gfal_opendir</a> Similar behavior to the POSIX readdir ( man 2 readdir )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: descriptor of the directory </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return the directory information if the operation was successful, NULL if the end of the directory is reached or if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testdir_8c-example.html#a1">gfal_testdir.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1c0177f7b54b135ab1c658402170e984"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssize_t gfal_readlink </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>buffsiz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>resolve a link destination </p>
<p>Similar behavior to the POSIX readlink ( man 2 readlink )</p>
<p>Some protocols can not support this functionality, \ check the protocol specification for more information.</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file to access, can be in supported protocols (lfn, srm, file, guid,..) </td></tr>
    <tr><td class="paramname">buff</td><td>: buffer to fill </td></tr>
    <tr><td class="paramname">buffsiz</td><td>: maximum size of the link destination </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return the size of the link destination \ if the operation was successful, or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="ga8c35f27b85007207bf4c838278b38ae2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_removexattr </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>delete a extended attribute value </p>
<p>similar to the removexattr function</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file </td></tr>
    <tr><td class="paramname">name</td><td>: key of the extended attribute </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>On success, return 0. In case of errors, -1 is returned see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="ga97909aaf76cda4966a019190be091439"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_rename </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>oldurl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>newurl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>change the name or location of a file </p>
<p>gfal_rename will rename the specified files by replacing the first occurrence of from in their name by to. gfal_rename implies two URL with the same protocols and generally on the same server. Similar behavior to the POSIX rename ( man 2 rename )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">oldurl</td><td>: the old url of the file </td></tr>
    <tr><td class="paramname">newurl</td><td>: the new url of the file </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>: return 0 if success, else -1 if errors. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testcreatedir_8c-example.html#a2">gfal_testcreatedir.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga06d9c5cfadb171f1ec10c64ff1a5b94a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_rmdir </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>delete a directory </p>
<p>Similar behavior to the POSIX rmdir ( man 2 rmdir )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the directory to suppress </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return 0 if the operation was successful, or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testcreatedir_8c-example.html#a3">gfal_testcreatedir.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga436a6ea0bf30fba5ea242d729b0ce67f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_set_verbose </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>set the gfal verbose mode</p>
<p>see gfal_constant.h for details </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testget_8c-example.html#a0">gfal_testget.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaeef33a2b41a726d3f9da05f872197b09"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_setxattr </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>define an extended attribute value </p>
<p>similar to the listxattr function</p>
<p>In gfal 2.0, this is the standard way to interact \ with advanced file properties</p>
<p>ex : gfal_setxattr("srm://myurl/endpoint", "user.status", "ONLINE", strlen("ONLINE"),0); // -&gt; simple brings_online</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file </td></tr>
    <tr><td class="paramname">name</td><td>: key of the extended attribute </td></tr>
    <tr><td class="paramname">value</td><td>: buffer for the extended attribute value </td></tr>
    <tr><td class="paramname">size</td><td>: size of the attribute value </td></tr>
    <tr><td class="paramname">flags</td><td>: mode </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>On success, return 0 . In case of errors, -1 is returned see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="ga4b18c9bed445f15b427ad26bee6a2fcd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_stat </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct stat *&#160;</td>
          <td class="paramname"><em>st</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>get the file status, follow links </p>
<p>return informations about the given files Similar behavior to the POSIX stat ( man 2 stat )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file </td></tr>
    <tr><td class="paramname">st</td><td>: pointer to an allocated struct stat </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>: return 0 if success, else -1 if errors. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="ga0e57a6e75e750aa134622a229653a04d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_symlink </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>oldurl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>newurl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>create a symbolic link </p>
<p>Similar behavior to the POSIX symlink ( man 2 symlink )</p>
<p>Some protocols can not support this functionality, \ check the protocol specification for more information.</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">oldurl</td><td>: url of the original file </td></tr>
    <tr><td class="paramname">newurl</td><td>: url of the symlink </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return 0 if the operation was successful, or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="gadda0ae0dccc4b86c57b36f77fea4a1e3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gfal_unlink </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>unlink a file, delete it </p>
<p>Similar behavior to the POSIX unlink ( man 2 unlink )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>: url of the file to delete </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>This routine return 0 if the operation was successful, or -1 if error occured. In case of errors, see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>

</div>
</div>
<a class="anchor" id="ga9dac4cce5aedb7bf547d81f1797cdb4b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* gfal_version </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>get a string representation of the gfal version </p>
<dl class="section return"><dt>Returns:</dt><dd>string of the gfal_version </dd></dl>

</div>
</div>
<a class="anchor" id="gafe7ed132ad1c8d93f73f59d7dfd94940"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssize_t gfal_write </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>write from a gfal file descriptor </p>
<p>Similar behavior to the POSIX write ( man 2 write )</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>: gfal file descriptor of the file </td></tr>
    <tr><td class="paramname">buff</td><td>: buffer for the write content </td></tr>
    <tr><td class="paramname">size</td><td>: maximum size to write </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>On success, the number of bytes written is returned. In case of errors, -1 is returned see <a class="el" href="group__posix__group.html#gac937c592821b1f2f7686c576e2594cba">gfal_posix_check_error()</a> for error management </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gfal_testrw_8c-example.html#a2">gfal_testrw.c</a>.</dd>
</dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.1
</small></address>
</body>
</html>