<blockquote>
<p>To me it came across that gio would first use the atomic routine (even when not selected) and only try gio if the atomic is not able to recreate metadata.</p>
</blockquote>
<p>The <code>g_file_replace_contents()</code> is a GIO function, and (when I read its source) it creates a new file, tries to copy metadata from the existing file, if that succeeds it writes the new data and does the rename over the old file, if any of the above fails, it copies the old file to a backup, truncates the old file and writes the new data to it, thus preserving metadata and links. So it does use the atomic method if it can, but not by calling <code>g_file_set_contents()</code> and note its all in GIO, not something Geany does.</p>
<p>I don't remember and didn't record what it does with links when things succeed, and as I said above it may have changed in the last four years.  If you checked its source and it has comments in the code that say it handles links then thats great, but as its not documented behaviour don't depend on it.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/issues/1533#issuecomment-313887270">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJ7X5vR7OL9Mm7gR5UfFgqI2Mb3Byks5sMBHAgaJpZM4OOhiA">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJ-L8iZoJQ_LBSZLYemWSXUNcj3fMks5sMBHAgaJpZM4OOhiA.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/geany/geany/issues/1533#issuecomment-313887270"></link>
  <meta itemprop="name" content="View Issue"></meta>
</div>
<meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/geany/geany","title":"geany/geany","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/geany/geany"}},"updates":{"snippets":[{"icon":"PERSON","message":"@elextr in #1533: \u003e To me it came across that gio would first use the atomic routine (even when not selected) and only try gio if the atomic is not able to recreate metadata.\r\n\r\nThe `g_file_replace_contents()` is a GIO function, and (when I read its source) it creates a new file, tries to copy metadata from the existing file, if that succeeds it writes the new data and does the rename over the old file, if any of the above fails, it copies the old file to a backup, truncates the old file and writes the new data to it, thus preserving metadata and links. So it does use the atomic method if it can, but not by calling `g_file_set_contents()` and note its all in GIO, not something Geany does.\r\n\r\nI don't remember and didn't record what it does with links when things succeed, and as I said above it may have changed in the last four years.  If you checked its source and it has comments in the code that say it handles links then thats great, but as its not documented behaviour don't depend on it.\r\n\r\n"}],"action":{"name":"View Issue","url":"https://github.com/geany/geany/issues/1533#issuecomment-313887270"}}}</script>