@@ -437,10 +437,29 @@
437 437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return mprintf("%.*s", (int)(zTail-z-1), z);
438 438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
439 439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
440 440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
441 441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* SQL Function: file_dirname(NAME)
444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the directory for NAME
446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void file_dirname_sql_function(
448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_context *context,
449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int argc,
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_value **argv
451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName = (const char*)sqlite3_value_text(argv[0]);
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zDir;
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName==0 ) return;
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDir = file_dirname(zName);
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zDir ){
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(context,zDir,-1,fossil_free);
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
442 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
443 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
444 463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Rename a file or directory.
445 464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Returns zero upon success.
446 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -594,10 +613,30 @@
594 613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = unlink(zFilename);
595 614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
596 615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_path_free(z);
597 616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
598 617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* SQL Function: file_delete(NAME)
620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Remove file NAME. Return zero on success and non-zero if anything goes
622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** wrong.
623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void file_delete_sql_function(
625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_context *context,
626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int argc,
627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_value **argv
628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName = (const char*)sqlite3_value_text(argv[0]);
630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName==0 ){
632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = file_delete(zName);
635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_int(context, rc);
637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
599 638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
600 639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
601 640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Create a directory called zName, if it does not already exist.
602 641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If forceFlag is 1, delete any prior non-directory object
603 642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with the same name.
@@ -684,10 +723,30 @@
684 723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_path_free(zMbcs);
685 724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
686 725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
687 726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
688 727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* SQL Function: rmdir(NAME)
730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Try to remove the directory NAME. Return zero on success and non-zero
732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for failure.
733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void file_rmdir_sql_function(
735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_context *context,
736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int argc,
737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_value **argv
738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName = (const char*)sqlite3_value_text(argv[0]);
740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName==0 ){
742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = file_rmdir(zName);
745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_int(context, rc);
747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
689 748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
690 749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
691 750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if the filename given is a valid filename for
692 751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a file in a repository. Valid filenames follow all of the
693 752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** following rules:
@@ -890,12 +949,20 @@
890 949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Get the current working directory.
891 950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
892 951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** On windows, the name is converted from unicode to UTF8 and all '\\'
893 952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** characters are converted to '/'. No conversions are needed on
894 953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** unix.
954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Store the value of the CWD in zBuf which is nBuf bytes in size.
956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or if zBuf==0, allocate space to hold the result using fossil_malloc().
895 957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void file_getcwd(char *zBuf, int nBuf){
958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *file_getcwd(char *zBuf, int nBuf){
959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zTemp[2000];
960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zBuf==0 ){
961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zBuf = zTemp;
962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nBuf = sizeof(zTemp);
963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
897 964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef _WIN32
898 965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
win32_getcwd(zBuf, nBuf);
899 966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
900 967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( getcwd(zBuf, nBuf-1)==0 ){
901 968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( errno==ERANGE ){
@@ -904,10 +971,11 @@
904 971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_panic("cannot find current working directory; %s",
905 972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
strerror(errno));
906 973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
907 974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
908 975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zBuf==zTemp ? fossil_strdup(zBuf) : zBuf;
909 977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
910 978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
911 979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
912 980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if zPath is an absolute pathname. Return false
913 981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if it is relative.
914 982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!