You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Ian Clelland (JIRA)" <ji...@apache.org> on 2014/06/17 15:20:02 UTC

[jira] [Commented] (CB-6938) iOS File plugin: copyTo for file returns error when destination file exists

    [ https://issues.apache.org/jira/browse/CB-6938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14033770#comment-14033770 ] 

Ian Clelland commented on CB-6938:
----------------------------------

It looks like that wording was added for the most recent version of the spec -- it's in http://www.w3.org/TR/2012/WD-file-system-api-20120417/, but not in the previous version http://www.w3.org/TR/2011/WD-file-system-api-20110419/

(A similar note appears with the {{.moveTo}} method, and dates back to the original version of the document. It's just {{.copyoTo}} which had unspecified behaviour.)

We'll need to work up a couple of test cases for this, but otherwise I'm fine with adding it. The spec has been abandoned by the W3C, but this will at least ensure better compatibility with Chrome apps using the same API.

> iOS File plugin: copyTo for file returns error when destination file exists
> ---------------------------------------------------------------------------
>
>                 Key: CB-6938
>                 URL: https://issues.apache.org/jira/browse/CB-6938
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin File
>    Affects Versions: 3.5.0
>         Environment: ios
>            Reporter: Vladimir Avdonin
>
> According to w3c spec:
> A copy of a file on top of an existing file must attempt to delete and replace that file.
> iOS version of plugin in file CDVLocalFilesystem.m contains this code for the case:
>                 } else if (bNewExists) {
>                     // the full destination should NOT already exist if a copy
>                     errCode = PATH_EXISTS_ERR;
> Suggested patch:
> diff --git a/src/ios/CDVLocalFilesystem.m b/src/ios/CDVLocalFilesystem.m
> index d1576ad..f5aa508 100644
> --- a/src/ios/CDVLocalFilesystem.m
> +++ b/src/ios/CDVLocalFilesystem.m
> @@ -535,11 +535,11 @@
>                  if (bSrcIsDir && ![self canCopyMoveSrc:srcFullPath ToDestination:newFileSystemPath]) {
>                      // can't copy dir into self
>                      errCode = INVALID_MODIFICATION_ERR;
> -                } else if (bNewExists) {
> -                    // the full destination should NOT already exist if a copy
> -                    errCode = PATH_EXISTS_ERR;
>                  } else {
> -                    bSuccess = [fileMgr copyItemAtPath:srcFullPath toPath:newFileSystemPath error:&error];
> +                   bSuccess = YES;
> +                    if (bNewExists)
> +                        bSuccess = [fileMgr removeItemAtPath:newFileSystemPath error:&error];
> +                    if (bSuccess)
> +                        bSuccess = [fileMgr copyItemAtPath:srcFullPath toPath:newFileSystemPath error:&error];
>                  }
>              } else { // move
>                  // iOS requires that destination must not exist before calling moveTo



--
This message was sent by Atlassian JIRA
(v6.2#6252)