Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Pull the latest trunk changes over into the windows-i18n branch. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | windows-i18n |
Files: | files | file ages | folders |
SHA1: |
bbba16084079b0aec8fae638dd1b92de |
User & Date: | drh 2011-05-09 15:50:11.331 |
Context
2011-05-12
| ||
12:13 | Back out the [ab934c6b09fd1d5] change. Do not change the console output mode using SetConsoleOutputCP(). Go back to converting UTF8 into MBCS upon output. ... (check-in: b33032ae user: drh tags: windows-i18n) | |
2011-05-10
| ||
13:29 | Always write UTF8 to the console. Change the console output mode on windows to UTF8 at startup. ... (check-in: ab934c6b user: drh tags: windows-i18n) | |
2011-05-09
| ||
15:50 | Pull the latest trunk changes over into the windows-i18n branch. ... (check-in: bbba1608 user: drh tags: windows-i18n) | |
12:57 | Accept either "on" or "ON" as the value of the HTTPS environment variable. Ticket [e95f7c93370be8c86] ... (check-in: 2d92db7e user: drh tags: trunk) | |
2011-05-07
| ||
11:42 | Convert the fopen() in blob_write_to_file() into fossil_fopen(). ... (check-in: 43739765 user: drh tags: windows-i18n) | |
Changes
Changes to src/db.c.
︙ | ︙ | |||
683 684 685 686 687 688 689 690 691 692 693 694 | const char *zHome; if( g.configOpen ) return; #if defined(_WIN32) zHome = getenv("LOCALAPPDATA"); if( zHome==0 ){ zHome = getenv("APPDATA"); if( zHome==0 ){ zHome = getenv("HOMEPATH"); } } if( zHome==0 ){ fossil_fatal("cannot locate home directory - " | > > > | | 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 | const char *zHome; if( g.configOpen ) return; #if defined(_WIN32) zHome = getenv("LOCALAPPDATA"); if( zHome==0 ){ zHome = getenv("APPDATA"); if( zHome==0 ){ char *zDrive = getenv("HOMEDRIVE"); zHome = getenv("HOMEPATH"); if( zDrive && zHome ) zHome = mprintf("%s%s", zDrive, zHome); } } if( zHome==0 ){ fossil_fatal("cannot locate home directory - " "please set the LOCALAPPDATA or APPDATA or HOMEPATH " "environment variables"); } zHome = fossil_mbcs_to_utf8(zHome); #else zHome = getenv("HOME"); if( zHome==0 ){ fossil_fatal("cannot locate home directory - " "please set the HOME environment variable"); |
︙ | ︙ |
Changes to src/login.c.
︙ | ︙ | |||
678 679 680 681 682 683 684 | */ g.userUid = uid; if( fossil_strcmp(g.zLogin,"nobody")==0 ){ g.zLogin = 0; } /* Set the capabilities */ | | | | > > > > > > > > | < < | 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 | */ g.userUid = uid; if( fossil_strcmp(g.zLogin,"nobody")==0 ){ g.zLogin = 0; } /* Set the capabilities */ login_set_capabilities(zCap, 0); login_set_anon_nobody_capabilities(); } /* ** Memory of settings */ static int login_anon_once = 1; /* ** Add the default privileges of users "nobody" and "anonymous" as appropriate ** for the user g.zLogin. */ void login_set_anon_nobody_capabilities(void){ if( g.zLogin && login_anon_once ){ const char *zCap; /* All logged-in users inherit privileges from "nobody" */ zCap = db_text("", "SELECT cap FROM user WHERE login = 'nobody'"); login_set_capabilities(zCap, 0); if( fossil_strcmp(g.zLogin, "nobody")!=0 ){ /* All logged-in users inherit privileges from "anonymous" */ zCap = db_text("", "SELECT cap FROM user WHERE login = 'anonymous'"); login_set_capabilities(zCap, 0); } login_anon_once = 0; } } /* ** Flags passed into the 2nd argument of login_set_capabilities(). */ #if INTERFACE #define LOGIN_IGNORE_U 0x01 /* Ignore "u" */ #define LOGIN_IGNORE_V 0x01 /* Ignore "v" */ #endif /* ** Set the global capability flags based on a capability string. */ void login_set_capabilities(const char *zCap, unsigned flags){ int i; for(i=0; zCap[i]; i++){ switch( zCap[i] ){ case 's': g.okSetup = 1; /* Fall thru into Admin */ case 'a': g.okAdmin = g.okRdTkt = g.okWrTkt = g.okZip = g.okRdWiki = g.okWrWiki = g.okNewWiki = g.okApndWiki = g.okHistory = g.okClone = |
︙ | ︙ | |||
749 750 751 752 753 754 755 | case 't': g.okTktFmt = 1; break; case 'b': g.okAttach = 1; break; case 'x': g.okPrivate = 1; break; /* The "u" privileges is a little different. It recursively ** inherits all privileges of the user named "reader" */ case 'u': { | > | | > | | | 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 | case 't': g.okTktFmt = 1; break; case 'b': g.okAttach = 1; break; case 'x': g.okPrivate = 1; break; /* The "u" privileges is a little different. It recursively ** inherits all privileges of the user named "reader" */ case 'u': { if( (flags & LOGIN_IGNORE_U)==0 ){ const char *zUser; zUser = db_text("", "SELECT cap FROM user WHERE login='reader'"); login_set_capabilities(zUser, flags | LOGIN_IGNORE_U); } break; } /* The "v" privileges is a little different. It recursively ** inherits all privileges of the user named "developer" */ case 'v': { if( (flags & LOGIN_IGNORE_V)==0 ){ const char *zDev; zDev = db_text("", "SELECT cap FROM user WHERE login='developer'"); login_set_capabilities(zDev, flags | LOGIN_IGNORE_V); } break; } } } } |
︙ | ︙ | |||
857 858 859 860 861 862 863 | if( g.userUid ){ zCap = db_text("", "SELECT cap FROM user WHERE uid=%d", g.userUid); } if( fossil_strcmp(zUser,"nobody")==0 ) zUser = 0; g.zLogin = fossil_strdup(zUser); /* Set the capabilities */ | | | 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 | if( g.userUid ){ zCap = db_text("", "SELECT cap FROM user WHERE uid=%d", g.userUid); } if( fossil_strcmp(zUser,"nobody")==0 ) zUser = 0; g.zLogin = fossil_strdup(zUser); /* Set the capabilities */ login_set_capabilities(zCap, 0); login_anon_once = 1; login_set_anon_nobody_capabilities(); } /* ** Call this routine when the credential check fails. It causes ** a redirect to the "login" page. |
︙ | ︙ |
Changes to src/main.c.
︙ | ︙ | |||
810 811 812 813 814 815 816 | if( g.zBaseURL!=0 ) return; zHost = PD("HTTP_HOST",""); zMode = PD("HTTPS","off"); zCur = PD("SCRIPT_NAME","/"); i = strlen(zCur); while( i>0 && zCur[i-1]=='/' ) i--; | | | 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 | if( g.zBaseURL!=0 ) return; zHost = PD("HTTP_HOST",""); zMode = PD("HTTPS","off"); zCur = PD("SCRIPT_NAME","/"); i = strlen(zCur); while( i>0 && zCur[i-1]=='/' ) i--; if( fossil_stricmp(zMode,"on")==0 ){ g.zBaseURL = mprintf("https://%s%.*s", zHost, i, zCur); g.zTop = &g.zBaseURL[8+strlen(zHost)]; }else{ g.zBaseURL = mprintf("http://%s%.*s", zHost, i, zCur); g.zTop = &g.zBaseURL[7+strlen(zHost)]; } } |
︙ | ︙ | |||
1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 | for(jj=0; zAltRepo[jj] && zAltRepo[jj]!=':'; jj++){} if( zAltRepo[jj]==':' ){ zAltRepo[jj] = 0; zAltRepo += jj+1; }else{ zUser = "nobody"; } if( zAltRepo[0]!='/' ){ zAltRepo = mprintf("%s/../%s", g.zRepositoryName, zAltRepo); file_simplify_name(zAltRepo, -1); } db_close(1); db_open_repository(zAltRepo); login_as_user(zUser); | > | 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 | for(jj=0; zAltRepo[jj] && zAltRepo[jj]!=':'; jj++){} if( zAltRepo[jj]==':' ){ zAltRepo[jj] = 0; zAltRepo += jj+1; }else{ zUser = "nobody"; } if( g.zLogin==0 ) zUser = "nobody"; if( zAltRepo[0]!='/' ){ zAltRepo = mprintf("%s/../%s", g.zRepositoryName, zAltRepo); file_simplify_name(zAltRepo, -1); } db_close(1); db_open_repository(zAltRepo); login_as_user(zUser); |
︙ | ︙ | |||
1305 1306 1307 1308 1309 1310 1311 | /* ** Note that the following command is used by ssh:// processing. ** ** COMMAND: test-http ** Works like the http command but gives setup permission to all users. */ void cmd_test_http(void){ | | | 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 | /* ** Note that the following command is used by ssh:// processing. ** ** COMMAND: test-http ** Works like the http command but gives setup permission to all users. */ void cmd_test_http(void){ login_set_capabilities("s", 0); g.httpIn = stdin; g.httpOut = stdout; find_server_repository(0); g.cgiOutput = 1; g.fullHttpReply = 1; cgi_handle_http_request(0); process_one_web_page(0); |
︙ | ︙ |
Changes to src/style.c.
︙ | ︙ | |||
798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 | g.isConst = 1; } /* ** WEBPAGE: test_env */ void page_test_env(void){ login_check_credentials(); style_header("Environment Test"); #if !defined(_WIN32) @ uid=%d(getuid()), gid=%d(getgid())<br /> #endif @ g.zBaseURL = %h(g.zBaseURL)<br /> @ g.zTop = %h(g.zTop)<br /> cgi_print_all(); if( g.okSetup ){ const char *zRedir = P("redirect"); if( zRedir ) cgi_redirect(zRedir); } style_footer(); } | > > > > > > > > > > > | 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 | g.isConst = 1; } /* ** WEBPAGE: test_env */ void page_test_env(void){ char c; int i; char zCap[30]; login_check_credentials(); style_header("Environment Test"); #if !defined(_WIN32) @ uid=%d(getuid()), gid=%d(getgid())<br /> #endif @ g.zBaseURL = %h(g.zBaseURL)<br /> @ g.zTop = %h(g.zTop)<br /> for(i=0, c='a'; c<='z'; c++){ if( login_has_capability(&c, 1) ) zCap[i++] = c; } zCap[i] = 0; @ g.userUid = %d(g.userUid)<br /> @ g.zLogin = %h(g.zLogin)<br /> @ capabilities = %s(zCap)<br /> @ <hr> cgi_print_all(); if( g.okSetup ){ const char *zRedir = P("redirect"); if( zRedir ) cgi_redirect(zRedir); } style_footer(); } |
Changes to src/xfer.c.
︙ | ︙ | |||
593 594 595 596 597 598 599 | rc = blob_compare(&hash, pSig); blob_reset(&hash); blob_reset(&combined); } if( rc==0 ){ const char *zCap; zCap = db_column_text(&q, 1); | | | 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 | rc = blob_compare(&hash, pSig); blob_reset(&hash); blob_reset(&combined); } if( rc==0 ){ const char *zCap; zCap = db_column_text(&q, 1); login_set_capabilities(zCap, 0); g.userUid = db_column_int(&q, 2); g.zLogin = mprintf("%b", pLogin); g.zNonce = mprintf("%b", pNonce); } } db_finalize(&q); return rc; |
︙ | ︙ |