Fossil SCM
Merge in changes from the wolfgangFormat2CSS_2 branch, but with edits.
Commit
b48f78964e78a0fb388d3820fc71501a57e323f5
Parent
bb1b3fa928faf41…
7 files changed
+46
-27
+46
-27
+55
+55
+4
-2
+3
-1
+1
-4
M
src/db.c
+46
-27
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1492,10 +1492,48 @@ | ||
| 1492 | 1492 | } |
| 1493 | 1493 | db_finalize(&q); |
| 1494 | 1494 | } |
| 1495 | 1495 | |
| 1496 | 1496 | |
| 1497 | +/* | |
| 1498 | +** define all settings, which can be controlled via the set/unset | |
| 1499 | +** command. var is the name of the internal configuration name for db_(un)set. | |
| 1500 | +** If var is 0, the settings name is used. | |
| 1501 | +** width is the length for the edit field on the behavior page, 0 | |
| 1502 | +** is used for on/off checkboxes. | |
| 1503 | +** The behaviour page doesn't use a special layout. It lists all | |
| 1504 | +** set-commands and displays the 'set'-help as info. | |
| 1505 | +*/ | |
| 1506 | +#if INTERFACE | |
| 1507 | +struct stControlSettings { | |
| 1508 | + char const *name; /* Name of the setting */ | |
| 1509 | + char const *var; /* Internal variable name used by db_set() */ | |
| 1510 | + int width; /* Width of display. 0 for boolean values */ | |
| 1511 | + char const *def; /* Default value */ | |
| 1512 | +}; | |
| 1513 | +#endif /* INTERFACE */ | |
| 1514 | +struct stControlSettings const ctrlSettings[] = { | |
| 1515 | + { "auto-captcha", "autocaptcha", 0, "0" }, | |
| 1516 | + { "auto-shun", 0, 0, "1" }, | |
| 1517 | + { "autosync", 0, 0, "0" }, | |
| 1518 | + { "binary-glob", 0, 0, "1" }, | |
| 1519 | + { "clearsign", 0, 0, "0" }, | |
| 1520 | + { "diff-command", 0, 16, "diff" }, | |
| 1521 | + { "dont-push", 0, 0, "0" }, | |
| 1522 | + { "editor", 0, 16, "" }, | |
| 1523 | + { "gdiff-command", 0, 16, "gdiff" }, | |
| 1524 | + { "ignore-glob", 0, 40, "" }, | |
| 1525 | + { "http-port", 0, 16, "8080" }, | |
| 1526 | + { "localauth", 0, 0, "0" }, | |
| 1527 | + { "mtime-changes", 0, 0, "0" }, | |
| 1528 | + { "pgp-command", 0, 32, "gpg --clearsign -o " }, | |
| 1529 | + { "proxy", 0, 32, "off" }, | |
| 1530 | + { "ssh-command", 0, 32, "" }, | |
| 1531 | + { "web-browser", 0, 32, "" }, | |
| 1532 | + { 0,0,0,0 } | |
| 1533 | +}; | |
| 1534 | + | |
| 1497 | 1535 | /* |
| 1498 | 1536 | ** COMMAND: settings |
| 1499 | 1537 | ** COMMAND: unset |
| 1500 | 1538 | ** %fossil settings ?PROPERTY? ?VALUE? ?-global? |
| 1501 | 1539 | ** %fossil unset PROPERTY ?-global? |
| @@ -1567,29 +1605,10 @@ | ||
| 1567 | 1605 | ** web browser when given a URL as an argument. |
| 1568 | 1606 | ** Defaults to "start" on windows, "open" on Mac, |
| 1569 | 1607 | ** and "firefox" on Unix. |
| 1570 | 1608 | */ |
| 1571 | 1609 | void setting_cmd(void){ |
| 1572 | - static const char *azName[] = { | |
| 1573 | - "auto-captcha", | |
| 1574 | - "auto-shun", | |
| 1575 | - "autosync", | |
| 1576 | - "binary-glob", | |
| 1577 | - "clearsign", | |
| 1578 | - "diff-command", | |
| 1579 | - "dont-push", | |
| 1580 | - "editor", | |
| 1581 | - "gdiff-command", | |
| 1582 | - "ignore-glob", | |
| 1583 | - "http-port", | |
| 1584 | - "localauth", | |
| 1585 | - "mtime-changes", | |
| 1586 | - "pgp-command", | |
| 1587 | - "proxy", | |
| 1588 | - "ssh-command", | |
| 1589 | - "web-browser", | |
| 1590 | - }; | |
| 1591 | 1610 | int i; |
| 1592 | 1611 | int globalFlag = find_option("global","g",0)!=0; |
| 1593 | 1612 | int unsetFlag = g.argv[1][0]=='u'; |
| 1594 | 1613 | db_open_config(1); |
| 1595 | 1614 | db_find_and_open_repository(0); |
| @@ -1598,28 +1617,28 @@ | ||
| 1598 | 1617 | } |
| 1599 | 1618 | if( unsetFlag && g.argc!=3 ){ |
| 1600 | 1619 | usage("PROPERTY ?-global?"); |
| 1601 | 1620 | } |
| 1602 | 1621 | if( g.argc==2 ){ |
| 1603 | - for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){ | |
| 1604 | - print_setting(azName[i]); | |
| 1622 | + for(i=0; ctrlSettings[i].name; i++){ | |
| 1623 | + print_setting(ctrlSettings[i].name); | |
| 1605 | 1624 | } |
| 1606 | 1625 | }else if( g.argc==3 || g.argc==4 ){ |
| 1607 | 1626 | const char *zName = g.argv[2]; |
| 1608 | 1627 | int n = strlen(zName); |
| 1609 | - for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){ | |
| 1610 | - if( strncmp(azName[i], zName, n)==0 ) break; | |
| 1628 | + for(i=0; ctrlSettings[i].name; i++){ | |
| 1629 | + if( strncmp(ctrlSettings[i].name, zName, n)==0 ) break; | |
| 1611 | 1630 | } |
| 1612 | - if( i>=sizeof(azName)/sizeof(azName[0]) ){ | |
| 1631 | + if( !ctrlSettings[i].name ){ | |
| 1613 | 1632 | fossil_fatal("no such setting: %s", zName); |
| 1614 | 1633 | } |
| 1615 | 1634 | if( unsetFlag ){ |
| 1616 | - db_unset(azName[i], globalFlag); | |
| 1635 | + db_unset(ctrlSettings[i].name, globalFlag); | |
| 1617 | 1636 | }else if( g.argc==4 ){ |
| 1618 | - db_set(azName[i], g.argv[3], globalFlag); | |
| 1637 | + db_set(ctrlSettings[i].name, g.argv[3], globalFlag); | |
| 1619 | 1638 | }else{ |
| 1620 | - print_setting(azName[i]); | |
| 1639 | + print_setting(ctrlSettings[i].name); | |
| 1621 | 1640 | } |
| 1622 | 1641 | }else{ |
| 1623 | 1642 | usage("?PROPERTY? ?VALUE?"); |
| 1624 | 1643 | } |
| 1625 | 1644 | } |
| 1626 | 1645 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1492,10 +1492,48 @@ | |
| 1492 | } |
| 1493 | db_finalize(&q); |
| 1494 | } |
| 1495 | |
| 1496 | |
| 1497 | /* |
| 1498 | ** COMMAND: settings |
| 1499 | ** COMMAND: unset |
| 1500 | ** %fossil settings ?PROPERTY? ?VALUE? ?-global? |
| 1501 | ** %fossil unset PROPERTY ?-global? |
| @@ -1567,29 +1605,10 @@ | |
| 1567 | ** web browser when given a URL as an argument. |
| 1568 | ** Defaults to "start" on windows, "open" on Mac, |
| 1569 | ** and "firefox" on Unix. |
| 1570 | */ |
| 1571 | void setting_cmd(void){ |
| 1572 | static const char *azName[] = { |
| 1573 | "auto-captcha", |
| 1574 | "auto-shun", |
| 1575 | "autosync", |
| 1576 | "binary-glob", |
| 1577 | "clearsign", |
| 1578 | "diff-command", |
| 1579 | "dont-push", |
| 1580 | "editor", |
| 1581 | "gdiff-command", |
| 1582 | "ignore-glob", |
| 1583 | "http-port", |
| 1584 | "localauth", |
| 1585 | "mtime-changes", |
| 1586 | "pgp-command", |
| 1587 | "proxy", |
| 1588 | "ssh-command", |
| 1589 | "web-browser", |
| 1590 | }; |
| 1591 | int i; |
| 1592 | int globalFlag = find_option("global","g",0)!=0; |
| 1593 | int unsetFlag = g.argv[1][0]=='u'; |
| 1594 | db_open_config(1); |
| 1595 | db_find_and_open_repository(0); |
| @@ -1598,28 +1617,28 @@ | |
| 1598 | } |
| 1599 | if( unsetFlag && g.argc!=3 ){ |
| 1600 | usage("PROPERTY ?-global?"); |
| 1601 | } |
| 1602 | if( g.argc==2 ){ |
| 1603 | for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){ |
| 1604 | print_setting(azName[i]); |
| 1605 | } |
| 1606 | }else if( g.argc==3 || g.argc==4 ){ |
| 1607 | const char *zName = g.argv[2]; |
| 1608 | int n = strlen(zName); |
| 1609 | for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){ |
| 1610 | if( strncmp(azName[i], zName, n)==0 ) break; |
| 1611 | } |
| 1612 | if( i>=sizeof(azName)/sizeof(azName[0]) ){ |
| 1613 | fossil_fatal("no such setting: %s", zName); |
| 1614 | } |
| 1615 | if( unsetFlag ){ |
| 1616 | db_unset(azName[i], globalFlag); |
| 1617 | }else if( g.argc==4 ){ |
| 1618 | db_set(azName[i], g.argv[3], globalFlag); |
| 1619 | }else{ |
| 1620 | print_setting(azName[i]); |
| 1621 | } |
| 1622 | }else{ |
| 1623 | usage("?PROPERTY? ?VALUE?"); |
| 1624 | } |
| 1625 | } |
| 1626 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1492,10 +1492,48 @@ | |
| 1492 | } |
| 1493 | db_finalize(&q); |
| 1494 | } |
| 1495 | |
| 1496 | |
| 1497 | /* |
| 1498 | ** define all settings, which can be controlled via the set/unset |
| 1499 | ** command. var is the name of the internal configuration name for db_(un)set. |
| 1500 | ** If var is 0, the settings name is used. |
| 1501 | ** width is the length for the edit field on the behavior page, 0 |
| 1502 | ** is used for on/off checkboxes. |
| 1503 | ** The behaviour page doesn't use a special layout. It lists all |
| 1504 | ** set-commands and displays the 'set'-help as info. |
| 1505 | */ |
| 1506 | #if INTERFACE |
| 1507 | struct stControlSettings { |
| 1508 | char const *name; /* Name of the setting */ |
| 1509 | char const *var; /* Internal variable name used by db_set() */ |
| 1510 | int width; /* Width of display. 0 for boolean values */ |
| 1511 | char const *def; /* Default value */ |
| 1512 | }; |
| 1513 | #endif /* INTERFACE */ |
| 1514 | struct stControlSettings const ctrlSettings[] = { |
| 1515 | { "auto-captcha", "autocaptcha", 0, "0" }, |
| 1516 | { "auto-shun", 0, 0, "1" }, |
| 1517 | { "autosync", 0, 0, "0" }, |
| 1518 | { "binary-glob", 0, 0, "1" }, |
| 1519 | { "clearsign", 0, 0, "0" }, |
| 1520 | { "diff-command", 0, 16, "diff" }, |
| 1521 | { "dont-push", 0, 0, "0" }, |
| 1522 | { "editor", 0, 16, "" }, |
| 1523 | { "gdiff-command", 0, 16, "gdiff" }, |
| 1524 | { "ignore-glob", 0, 40, "" }, |
| 1525 | { "http-port", 0, 16, "8080" }, |
| 1526 | { "localauth", 0, 0, "0" }, |
| 1527 | { "mtime-changes", 0, 0, "0" }, |
| 1528 | { "pgp-command", 0, 32, "gpg --clearsign -o " }, |
| 1529 | { "proxy", 0, 32, "off" }, |
| 1530 | { "ssh-command", 0, 32, "" }, |
| 1531 | { "web-browser", 0, 32, "" }, |
| 1532 | { 0,0,0,0 } |
| 1533 | }; |
| 1534 | |
| 1535 | /* |
| 1536 | ** COMMAND: settings |
| 1537 | ** COMMAND: unset |
| 1538 | ** %fossil settings ?PROPERTY? ?VALUE? ?-global? |
| 1539 | ** %fossil unset PROPERTY ?-global? |
| @@ -1567,29 +1605,10 @@ | |
| 1605 | ** web browser when given a URL as an argument. |
| 1606 | ** Defaults to "start" on windows, "open" on Mac, |
| 1607 | ** and "firefox" on Unix. |
| 1608 | */ |
| 1609 | void setting_cmd(void){ |
| 1610 | int i; |
| 1611 | int globalFlag = find_option("global","g",0)!=0; |
| 1612 | int unsetFlag = g.argv[1][0]=='u'; |
| 1613 | db_open_config(1); |
| 1614 | db_find_and_open_repository(0); |
| @@ -1598,28 +1617,28 @@ | |
| 1617 | } |
| 1618 | if( unsetFlag && g.argc!=3 ){ |
| 1619 | usage("PROPERTY ?-global?"); |
| 1620 | } |
| 1621 | if( g.argc==2 ){ |
| 1622 | for(i=0; ctrlSettings[i].name; i++){ |
| 1623 | print_setting(ctrlSettings[i].name); |
| 1624 | } |
| 1625 | }else if( g.argc==3 || g.argc==4 ){ |
| 1626 | const char *zName = g.argv[2]; |
| 1627 | int n = strlen(zName); |
| 1628 | for(i=0; ctrlSettings[i].name; i++){ |
| 1629 | if( strncmp(ctrlSettings[i].name, zName, n)==0 ) break; |
| 1630 | } |
| 1631 | if( !ctrlSettings[i].name ){ |
| 1632 | fossil_fatal("no such setting: %s", zName); |
| 1633 | } |
| 1634 | if( unsetFlag ){ |
| 1635 | db_unset(ctrlSettings[i].name, globalFlag); |
| 1636 | }else if( g.argc==4 ){ |
| 1637 | db_set(ctrlSettings[i].name, g.argv[3], globalFlag); |
| 1638 | }else{ |
| 1639 | print_setting(ctrlSettings[i].name); |
| 1640 | } |
| 1641 | }else{ |
| 1642 | usage("?PROPERTY? ?VALUE?"); |
| 1643 | } |
| 1644 | } |
| 1645 |
M
src/db.c
+46
-27
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1492,10 +1492,48 @@ | ||
| 1492 | 1492 | } |
| 1493 | 1493 | db_finalize(&q); |
| 1494 | 1494 | } |
| 1495 | 1495 | |
| 1496 | 1496 | |
| 1497 | +/* | |
| 1498 | +** define all settings, which can be controlled via the set/unset | |
| 1499 | +** command. var is the name of the internal configuration name for db_(un)set. | |
| 1500 | +** If var is 0, the settings name is used. | |
| 1501 | +** width is the length for the edit field on the behavior page, 0 | |
| 1502 | +** is used for on/off checkboxes. | |
| 1503 | +** The behaviour page doesn't use a special layout. It lists all | |
| 1504 | +** set-commands and displays the 'set'-help as info. | |
| 1505 | +*/ | |
| 1506 | +#if INTERFACE | |
| 1507 | +struct stControlSettings { | |
| 1508 | + char const *name; /* Name of the setting */ | |
| 1509 | + char const *var; /* Internal variable name used by db_set() */ | |
| 1510 | + int width; /* Width of display. 0 for boolean values */ | |
| 1511 | + char const *def; /* Default value */ | |
| 1512 | +}; | |
| 1513 | +#endif /* INTERFACE */ | |
| 1514 | +struct stControlSettings const ctrlSettings[] = { | |
| 1515 | + { "auto-captcha", "autocaptcha", 0, "0" }, | |
| 1516 | + { "auto-shun", 0, 0, "1" }, | |
| 1517 | + { "autosync", 0, 0, "0" }, | |
| 1518 | + { "binary-glob", 0, 0, "1" }, | |
| 1519 | + { "clearsign", 0, 0, "0" }, | |
| 1520 | + { "diff-command", 0, 16, "diff" }, | |
| 1521 | + { "dont-push", 0, 0, "0" }, | |
| 1522 | + { "editor", 0, 16, "" }, | |
| 1523 | + { "gdiff-command", 0, 16, "gdiff" }, | |
| 1524 | + { "ignore-glob", 0, 40, "" }, | |
| 1525 | + { "http-port", 0, 16, "8080" }, | |
| 1526 | + { "localauth", 0, 0, "0" }, | |
| 1527 | + { "mtime-changes", 0, 0, "0" }, | |
| 1528 | + { "pgp-command", 0, 32, "gpg --clearsign -o " }, | |
| 1529 | + { "proxy", 0, 32, "off" }, | |
| 1530 | + { "ssh-command", 0, 32, "" }, | |
| 1531 | + { "web-browser", 0, 32, "" }, | |
| 1532 | + { 0,0,0,0 } | |
| 1533 | +}; | |
| 1534 | + | |
| 1497 | 1535 | /* |
| 1498 | 1536 | ** COMMAND: settings |
| 1499 | 1537 | ** COMMAND: unset |
| 1500 | 1538 | ** %fossil settings ?PROPERTY? ?VALUE? ?-global? |
| 1501 | 1539 | ** %fossil unset PROPERTY ?-global? |
| @@ -1567,29 +1605,10 @@ | ||
| 1567 | 1605 | ** web browser when given a URL as an argument. |
| 1568 | 1606 | ** Defaults to "start" on windows, "open" on Mac, |
| 1569 | 1607 | ** and "firefox" on Unix. |
| 1570 | 1608 | */ |
| 1571 | 1609 | void setting_cmd(void){ |
| 1572 | - static const char *azName[] = { | |
| 1573 | - "auto-captcha", | |
| 1574 | - "auto-shun", | |
| 1575 | - "autosync", | |
| 1576 | - "binary-glob", | |
| 1577 | - "clearsign", | |
| 1578 | - "diff-command", | |
| 1579 | - "dont-push", | |
| 1580 | - "editor", | |
| 1581 | - "gdiff-command", | |
| 1582 | - "ignore-glob", | |
| 1583 | - "http-port", | |
| 1584 | - "localauth", | |
| 1585 | - "mtime-changes", | |
| 1586 | - "pgp-command", | |
| 1587 | - "proxy", | |
| 1588 | - "ssh-command", | |
| 1589 | - "web-browser", | |
| 1590 | - }; | |
| 1591 | 1610 | int i; |
| 1592 | 1611 | int globalFlag = find_option("global","g",0)!=0; |
| 1593 | 1612 | int unsetFlag = g.argv[1][0]=='u'; |
| 1594 | 1613 | db_open_config(1); |
| 1595 | 1614 | db_find_and_open_repository(0); |
| @@ -1598,28 +1617,28 @@ | ||
| 1598 | 1617 | } |
| 1599 | 1618 | if( unsetFlag && g.argc!=3 ){ |
| 1600 | 1619 | usage("PROPERTY ?-global?"); |
| 1601 | 1620 | } |
| 1602 | 1621 | if( g.argc==2 ){ |
| 1603 | - for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){ | |
| 1604 | - print_setting(azName[i]); | |
| 1622 | + for(i=0; ctrlSettings[i].name; i++){ | |
| 1623 | + print_setting(ctrlSettings[i].name); | |
| 1605 | 1624 | } |
| 1606 | 1625 | }else if( g.argc==3 || g.argc==4 ){ |
| 1607 | 1626 | const char *zName = g.argv[2]; |
| 1608 | 1627 | int n = strlen(zName); |
| 1609 | - for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){ | |
| 1610 | - if( strncmp(azName[i], zName, n)==0 ) break; | |
| 1628 | + for(i=0; ctrlSettings[i].name; i++){ | |
| 1629 | + if( strncmp(ctrlSettings[i].name, zName, n)==0 ) break; | |
| 1611 | 1630 | } |
| 1612 | - if( i>=sizeof(azName)/sizeof(azName[0]) ){ | |
| 1631 | + if( !ctrlSettings[i].name ){ | |
| 1613 | 1632 | fossil_fatal("no such setting: %s", zName); |
| 1614 | 1633 | } |
| 1615 | 1634 | if( unsetFlag ){ |
| 1616 | - db_unset(azName[i], globalFlag); | |
| 1635 | + db_unset(ctrlSettings[i].name, globalFlag); | |
| 1617 | 1636 | }else if( g.argc==4 ){ |
| 1618 | - db_set(azName[i], g.argv[3], globalFlag); | |
| 1637 | + db_set(ctrlSettings[i].name, g.argv[3], globalFlag); | |
| 1619 | 1638 | }else{ |
| 1620 | - print_setting(azName[i]); | |
| 1639 | + print_setting(ctrlSettings[i].name); | |
| 1621 | 1640 | } |
| 1622 | 1641 | }else{ |
| 1623 | 1642 | usage("?PROPERTY? ?VALUE?"); |
| 1624 | 1643 | } |
| 1625 | 1644 | } |
| 1626 | 1645 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1492,10 +1492,48 @@ | |
| 1492 | } |
| 1493 | db_finalize(&q); |
| 1494 | } |
| 1495 | |
| 1496 | |
| 1497 | /* |
| 1498 | ** COMMAND: settings |
| 1499 | ** COMMAND: unset |
| 1500 | ** %fossil settings ?PROPERTY? ?VALUE? ?-global? |
| 1501 | ** %fossil unset PROPERTY ?-global? |
| @@ -1567,29 +1605,10 @@ | |
| 1567 | ** web browser when given a URL as an argument. |
| 1568 | ** Defaults to "start" on windows, "open" on Mac, |
| 1569 | ** and "firefox" on Unix. |
| 1570 | */ |
| 1571 | void setting_cmd(void){ |
| 1572 | static const char *azName[] = { |
| 1573 | "auto-captcha", |
| 1574 | "auto-shun", |
| 1575 | "autosync", |
| 1576 | "binary-glob", |
| 1577 | "clearsign", |
| 1578 | "diff-command", |
| 1579 | "dont-push", |
| 1580 | "editor", |
| 1581 | "gdiff-command", |
| 1582 | "ignore-glob", |
| 1583 | "http-port", |
| 1584 | "localauth", |
| 1585 | "mtime-changes", |
| 1586 | "pgp-command", |
| 1587 | "proxy", |
| 1588 | "ssh-command", |
| 1589 | "web-browser", |
| 1590 | }; |
| 1591 | int i; |
| 1592 | int globalFlag = find_option("global","g",0)!=0; |
| 1593 | int unsetFlag = g.argv[1][0]=='u'; |
| 1594 | db_open_config(1); |
| 1595 | db_find_and_open_repository(0); |
| @@ -1598,28 +1617,28 @@ | |
| 1598 | } |
| 1599 | if( unsetFlag && g.argc!=3 ){ |
| 1600 | usage("PROPERTY ?-global?"); |
| 1601 | } |
| 1602 | if( g.argc==2 ){ |
| 1603 | for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){ |
| 1604 | print_setting(azName[i]); |
| 1605 | } |
| 1606 | }else if( g.argc==3 || g.argc==4 ){ |
| 1607 | const char *zName = g.argv[2]; |
| 1608 | int n = strlen(zName); |
| 1609 | for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){ |
| 1610 | if( strncmp(azName[i], zName, n)==0 ) break; |
| 1611 | } |
| 1612 | if( i>=sizeof(azName)/sizeof(azName[0]) ){ |
| 1613 | fossil_fatal("no such setting: %s", zName); |
| 1614 | } |
| 1615 | if( unsetFlag ){ |
| 1616 | db_unset(azName[i], globalFlag); |
| 1617 | }else if( g.argc==4 ){ |
| 1618 | db_set(azName[i], g.argv[3], globalFlag); |
| 1619 | }else{ |
| 1620 | print_setting(azName[i]); |
| 1621 | } |
| 1622 | }else{ |
| 1623 | usage("?PROPERTY? ?VALUE?"); |
| 1624 | } |
| 1625 | } |
| 1626 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1492,10 +1492,48 @@ | |
| 1492 | } |
| 1493 | db_finalize(&q); |
| 1494 | } |
| 1495 | |
| 1496 | |
| 1497 | /* |
| 1498 | ** define all settings, which can be controlled via the set/unset |
| 1499 | ** command. var is the name of the internal configuration name for db_(un)set. |
| 1500 | ** If var is 0, the settings name is used. |
| 1501 | ** width is the length for the edit field on the behavior page, 0 |
| 1502 | ** is used for on/off checkboxes. |
| 1503 | ** The behaviour page doesn't use a special layout. It lists all |
| 1504 | ** set-commands and displays the 'set'-help as info. |
| 1505 | */ |
| 1506 | #if INTERFACE |
| 1507 | struct stControlSettings { |
| 1508 | char const *name; /* Name of the setting */ |
| 1509 | char const *var; /* Internal variable name used by db_set() */ |
| 1510 | int width; /* Width of display. 0 for boolean values */ |
| 1511 | char const *def; /* Default value */ |
| 1512 | }; |
| 1513 | #endif /* INTERFACE */ |
| 1514 | struct stControlSettings const ctrlSettings[] = { |
| 1515 | { "auto-captcha", "autocaptcha", 0, "0" }, |
| 1516 | { "auto-shun", 0, 0, "1" }, |
| 1517 | { "autosync", 0, 0, "0" }, |
| 1518 | { "binary-glob", 0, 0, "1" }, |
| 1519 | { "clearsign", 0, 0, "0" }, |
| 1520 | { "diff-command", 0, 16, "diff" }, |
| 1521 | { "dont-push", 0, 0, "0" }, |
| 1522 | { "editor", 0, 16, "" }, |
| 1523 | { "gdiff-command", 0, 16, "gdiff" }, |
| 1524 | { "ignore-glob", 0, 40, "" }, |
| 1525 | { "http-port", 0, 16, "8080" }, |
| 1526 | { "localauth", 0, 0, "0" }, |
| 1527 | { "mtime-changes", 0, 0, "0" }, |
| 1528 | { "pgp-command", 0, 32, "gpg --clearsign -o " }, |
| 1529 | { "proxy", 0, 32, "off" }, |
| 1530 | { "ssh-command", 0, 32, "" }, |
| 1531 | { "web-browser", 0, 32, "" }, |
| 1532 | { 0,0,0,0 } |
| 1533 | }; |
| 1534 | |
| 1535 | /* |
| 1536 | ** COMMAND: settings |
| 1537 | ** COMMAND: unset |
| 1538 | ** %fossil settings ?PROPERTY? ?VALUE? ?-global? |
| 1539 | ** %fossil unset PROPERTY ?-global? |
| @@ -1567,29 +1605,10 @@ | |
| 1605 | ** web browser when given a URL as an argument. |
| 1606 | ** Defaults to "start" on windows, "open" on Mac, |
| 1607 | ** and "firefox" on Unix. |
| 1608 | */ |
| 1609 | void setting_cmd(void){ |
| 1610 | int i; |
| 1611 | int globalFlag = find_option("global","g",0)!=0; |
| 1612 | int unsetFlag = g.argv[1][0]=='u'; |
| 1613 | db_open_config(1); |
| 1614 | db_find_and_open_repository(0); |
| @@ -1598,28 +1617,28 @@ | |
| 1617 | } |
| 1618 | if( unsetFlag && g.argc!=3 ){ |
| 1619 | usage("PROPERTY ?-global?"); |
| 1620 | } |
| 1621 | if( g.argc==2 ){ |
| 1622 | for(i=0; ctrlSettings[i].name; i++){ |
| 1623 | print_setting(ctrlSettings[i].name); |
| 1624 | } |
| 1625 | }else if( g.argc==3 || g.argc==4 ){ |
| 1626 | const char *zName = g.argv[2]; |
| 1627 | int n = strlen(zName); |
| 1628 | for(i=0; ctrlSettings[i].name; i++){ |
| 1629 | if( strncmp(ctrlSettings[i].name, zName, n)==0 ) break; |
| 1630 | } |
| 1631 | if( !ctrlSettings[i].name ){ |
| 1632 | fossil_fatal("no such setting: %s", zName); |
| 1633 | } |
| 1634 | if( unsetFlag ){ |
| 1635 | db_unset(ctrlSettings[i].name, globalFlag); |
| 1636 | }else if( g.argc==4 ){ |
| 1637 | db_set(ctrlSettings[i].name, g.argv[3], globalFlag); |
| 1638 | }else{ |
| 1639 | print_setting(ctrlSettings[i].name); |
| 1640 | } |
| 1641 | }else{ |
| 1642 | usage("?PROPERTY? ?VALUE?"); |
| 1643 | } |
| 1644 | } |
| 1645 |
+55
| --- src/setup.c | ||
| +++ src/setup.c | ||
| @@ -19,10 +19,17 @@ | ||
| 19 | 19 | */ |
| 20 | 20 | #include <assert.h> |
| 21 | 21 | #include "config.h" |
| 22 | 22 | #include "setup.h" |
| 23 | 23 | |
| 24 | +/* | |
| 25 | +** The table of web pages supported by this application is generated | |
| 26 | +** automatically by the "mkindex" program and written into a file | |
| 27 | +** named "page_index.h". We include that file here to get access | |
| 28 | +** to the table. | |
| 29 | +*/ | |
| 30 | +#include "page_index.h" | |
| 24 | 31 | |
| 25 | 32 | /* |
| 26 | 33 | ** Output a single entry for a menu generated using an HTML table. |
| 27 | 34 | ** If zLink is not NULL or an empty string, then it is the page that |
| 28 | 35 | ** the menu entry will hyperlink to. If zLink is NULL or "", then |
| @@ -57,10 +64,12 @@ | ||
| 57 | 64 | "Grant privileges to individual users."); |
| 58 | 65 | setup_menu_entry("Access", "setup_access", |
| 59 | 66 | "Control access settings."); |
| 60 | 67 | setup_menu_entry("Configuration", "setup_config", |
| 61 | 68 | "Configure the WWW components of the repository"); |
| 69 | + setup_menu_entry("Settings", "setup_settings", | |
| 70 | + "Web interface to the \"fossil settings\" command"); | |
| 62 | 71 | setup_menu_entry("Timeline", "setup_timeline", |
| 63 | 72 | "Timeline display preferences"); |
| 64 | 73 | setup_menu_entry("Tickets", "tktsetup", |
| 65 | 74 | "Configure the trouble-ticketing system for this repository"); |
| 66 | 75 | setup_menu_entry("Skins", "setup_skin", |
| @@ -844,10 +853,56 @@ | ||
| 844 | 853 | @ <p><input type="submit" name="submit" value="Apply Changes" /></p> |
| 845 | 854 | @ </div></form> |
| 846 | 855 | db_end_transaction(0); |
| 847 | 856 | style_footer(); |
| 848 | 857 | } |
| 858 | + | |
| 859 | +/* | |
| 860 | +** WEBPAGE: setup_settings | |
| 861 | +*/ | |
| 862 | +void setup_settings(void){ | |
| 863 | + struct stControlSettings const *pSet; | |
| 864 | + | |
| 865 | + login_check_credentials(); | |
| 866 | + if( !g.okSetup ){ | |
| 867 | + login_needed(); | |
| 868 | + } | |
| 869 | + | |
| 870 | + style_header("Settings"); | |
| 871 | + db_begin_transaction(); | |
| 872 | + @ <p>This page provides a simple interface to the "fossil setting" command. | |
| 873 | + @ See the "fossil help setting" output below for further information on | |
| 874 | + @ the meaning of each setting.</p><hr /> | |
| 875 | + @ <form action="%s(g.zBaseURL)/setup_settings" method="post"><div> | |
| 876 | + @ <table border="0"><tr><td valign="top"> | |
| 877 | + login_insert_csrf_secret(); | |
| 878 | + for(pSet=ctrlSettings; pSet->name!=0; pSet++){ | |
| 879 | + if( pSet->width==0 ){ | |
| 880 | + onoff_attribute(pSet->name, pSet->name, | |
| 881 | + pSet->var!=0 ? pSet->var : pSet->name, | |
| 882 | + pSet->def[0]=='1'); | |
| 883 | + @ <br /> | |
| 884 | + } | |
| 885 | + } | |
| 886 | + @ </td><td width="30"></td><td valign="top"> | |
| 887 | + for(pSet=ctrlSettings; pSet->name!=0; pSet++){ | |
| 888 | + if( pSet->width!=0 ){ | |
| 889 | + entry_attribute(pSet->name, /*pSet->width*/ 40, pSet->name, | |
| 890 | + pSet->var!=0 ? pSet->var : pSet->name, | |
| 891 | + (char*)pSet->def); | |
| 892 | + @ <br /> | |
| 893 | + } | |
| 894 | + } | |
| 895 | + @ </tr></table> | |
| 896 | + @ <p><input type="submit" name="submit" value="Apply Changes" /></p> | |
| 897 | + @ </div></form> | |
| 898 | + @ <hr /><p> | |
| 899 | + @ These settings work in the same way, as the <kbd>set</kbd> commandline:<br> | |
| 900 | + @ <pre>%s(zHelp_setting_cmd)</pre></p> | |
| 901 | + db_end_transaction(0); | |
| 902 | + style_footer(); | |
| 903 | +} | |
| 849 | 904 | |
| 850 | 905 | /* |
| 851 | 906 | ** WEBPAGE: setup_config |
| 852 | 907 | */ |
| 853 | 908 | void setup_config(void){ |
| 854 | 909 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -19,10 +19,17 @@ | |
| 19 | */ |
| 20 | #include <assert.h> |
| 21 | #include "config.h" |
| 22 | #include "setup.h" |
| 23 | |
| 24 | |
| 25 | /* |
| 26 | ** Output a single entry for a menu generated using an HTML table. |
| 27 | ** If zLink is not NULL or an empty string, then it is the page that |
| 28 | ** the menu entry will hyperlink to. If zLink is NULL or "", then |
| @@ -57,10 +64,12 @@ | |
| 57 | "Grant privileges to individual users."); |
| 58 | setup_menu_entry("Access", "setup_access", |
| 59 | "Control access settings."); |
| 60 | setup_menu_entry("Configuration", "setup_config", |
| 61 | "Configure the WWW components of the repository"); |
| 62 | setup_menu_entry("Timeline", "setup_timeline", |
| 63 | "Timeline display preferences"); |
| 64 | setup_menu_entry("Tickets", "tktsetup", |
| 65 | "Configure the trouble-ticketing system for this repository"); |
| 66 | setup_menu_entry("Skins", "setup_skin", |
| @@ -844,10 +853,56 @@ | |
| 844 | @ <p><input type="submit" name="submit" value="Apply Changes" /></p> |
| 845 | @ </div></form> |
| 846 | db_end_transaction(0); |
| 847 | style_footer(); |
| 848 | } |
| 849 | |
| 850 | /* |
| 851 | ** WEBPAGE: setup_config |
| 852 | */ |
| 853 | void setup_config(void){ |
| 854 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -19,10 +19,17 @@ | |
| 19 | */ |
| 20 | #include <assert.h> |
| 21 | #include "config.h" |
| 22 | #include "setup.h" |
| 23 | |
| 24 | /* |
| 25 | ** The table of web pages supported by this application is generated |
| 26 | ** automatically by the "mkindex" program and written into a file |
| 27 | ** named "page_index.h". We include that file here to get access |
| 28 | ** to the table. |
| 29 | */ |
| 30 | #include "page_index.h" |
| 31 | |
| 32 | /* |
| 33 | ** Output a single entry for a menu generated using an HTML table. |
| 34 | ** If zLink is not NULL or an empty string, then it is the page that |
| 35 | ** the menu entry will hyperlink to. If zLink is NULL or "", then |
| @@ -57,10 +64,12 @@ | |
| 64 | "Grant privileges to individual users."); |
| 65 | setup_menu_entry("Access", "setup_access", |
| 66 | "Control access settings."); |
| 67 | setup_menu_entry("Configuration", "setup_config", |
| 68 | "Configure the WWW components of the repository"); |
| 69 | setup_menu_entry("Settings", "setup_settings", |
| 70 | "Web interface to the \"fossil settings\" command"); |
| 71 | setup_menu_entry("Timeline", "setup_timeline", |
| 72 | "Timeline display preferences"); |
| 73 | setup_menu_entry("Tickets", "tktsetup", |
| 74 | "Configure the trouble-ticketing system for this repository"); |
| 75 | setup_menu_entry("Skins", "setup_skin", |
| @@ -844,10 +853,56 @@ | |
| 853 | @ <p><input type="submit" name="submit" value="Apply Changes" /></p> |
| 854 | @ </div></form> |
| 855 | db_end_transaction(0); |
| 856 | style_footer(); |
| 857 | } |
| 858 | |
| 859 | /* |
| 860 | ** WEBPAGE: setup_settings |
| 861 | */ |
| 862 | void setup_settings(void){ |
| 863 | struct stControlSettings const *pSet; |
| 864 | |
| 865 | login_check_credentials(); |
| 866 | if( !g.okSetup ){ |
| 867 | login_needed(); |
| 868 | } |
| 869 | |
| 870 | style_header("Settings"); |
| 871 | db_begin_transaction(); |
| 872 | @ <p>This page provides a simple interface to the "fossil setting" command. |
| 873 | @ See the "fossil help setting" output below for further information on |
| 874 | @ the meaning of each setting.</p><hr /> |
| 875 | @ <form action="%s(g.zBaseURL)/setup_settings" method="post"><div> |
| 876 | @ <table border="0"><tr><td valign="top"> |
| 877 | login_insert_csrf_secret(); |
| 878 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 879 | if( pSet->width==0 ){ |
| 880 | onoff_attribute(pSet->name, pSet->name, |
| 881 | pSet->var!=0 ? pSet->var : pSet->name, |
| 882 | pSet->def[0]=='1'); |
| 883 | @ <br /> |
| 884 | } |
| 885 | } |
| 886 | @ </td><td width="30"></td><td valign="top"> |
| 887 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 888 | if( pSet->width!=0 ){ |
| 889 | entry_attribute(pSet->name, /*pSet->width*/ 40, pSet->name, |
| 890 | pSet->var!=0 ? pSet->var : pSet->name, |
| 891 | (char*)pSet->def); |
| 892 | @ <br /> |
| 893 | } |
| 894 | } |
| 895 | @ </tr></table> |
| 896 | @ <p><input type="submit" name="submit" value="Apply Changes" /></p> |
| 897 | @ </div></form> |
| 898 | @ <hr /><p> |
| 899 | @ These settings work in the same way, as the <kbd>set</kbd> commandline:<br> |
| 900 | @ <pre>%s(zHelp_setting_cmd)</pre></p> |
| 901 | db_end_transaction(0); |
| 902 | style_footer(); |
| 903 | } |
| 904 | |
| 905 | /* |
| 906 | ** WEBPAGE: setup_config |
| 907 | */ |
| 908 | void setup_config(void){ |
| 909 |
+55
| --- src/setup.c | ||
| +++ src/setup.c | ||
| @@ -19,10 +19,17 @@ | ||
| 19 | 19 | */ |
| 20 | 20 | #include <assert.h> |
| 21 | 21 | #include "config.h" |
| 22 | 22 | #include "setup.h" |
| 23 | 23 | |
| 24 | +/* | |
| 25 | +** The table of web pages supported by this application is generated | |
| 26 | +** automatically by the "mkindex" program and written into a file | |
| 27 | +** named "page_index.h". We include that file here to get access | |
| 28 | +** to the table. | |
| 29 | +*/ | |
| 30 | +#include "page_index.h" | |
| 24 | 31 | |
| 25 | 32 | /* |
| 26 | 33 | ** Output a single entry for a menu generated using an HTML table. |
| 27 | 34 | ** If zLink is not NULL or an empty string, then it is the page that |
| 28 | 35 | ** the menu entry will hyperlink to. If zLink is NULL or "", then |
| @@ -57,10 +64,12 @@ | ||
| 57 | 64 | "Grant privileges to individual users."); |
| 58 | 65 | setup_menu_entry("Access", "setup_access", |
| 59 | 66 | "Control access settings."); |
| 60 | 67 | setup_menu_entry("Configuration", "setup_config", |
| 61 | 68 | "Configure the WWW components of the repository"); |
| 69 | + setup_menu_entry("Settings", "setup_settings", | |
| 70 | + "Web interface to the \"fossil settings\" command"); | |
| 62 | 71 | setup_menu_entry("Timeline", "setup_timeline", |
| 63 | 72 | "Timeline display preferences"); |
| 64 | 73 | setup_menu_entry("Tickets", "tktsetup", |
| 65 | 74 | "Configure the trouble-ticketing system for this repository"); |
| 66 | 75 | setup_menu_entry("Skins", "setup_skin", |
| @@ -844,10 +853,56 @@ | ||
| 844 | 853 | @ <p><input type="submit" name="submit" value="Apply Changes" /></p> |
| 845 | 854 | @ </div></form> |
| 846 | 855 | db_end_transaction(0); |
| 847 | 856 | style_footer(); |
| 848 | 857 | } |
| 858 | + | |
| 859 | +/* | |
| 860 | +** WEBPAGE: setup_settings | |
| 861 | +*/ | |
| 862 | +void setup_settings(void){ | |
| 863 | + struct stControlSettings const *pSet; | |
| 864 | + | |
| 865 | + login_check_credentials(); | |
| 866 | + if( !g.okSetup ){ | |
| 867 | + login_needed(); | |
| 868 | + } | |
| 869 | + | |
| 870 | + style_header("Settings"); | |
| 871 | + db_begin_transaction(); | |
| 872 | + @ <p>This page provides a simple interface to the "fossil setting" command. | |
| 873 | + @ See the "fossil help setting" output below for further information on | |
| 874 | + @ the meaning of each setting.</p><hr /> | |
| 875 | + @ <form action="%s(g.zBaseURL)/setup_settings" method="post"><div> | |
| 876 | + @ <table border="0"><tr><td valign="top"> | |
| 877 | + login_insert_csrf_secret(); | |
| 878 | + for(pSet=ctrlSettings; pSet->name!=0; pSet++){ | |
| 879 | + if( pSet->width==0 ){ | |
| 880 | + onoff_attribute(pSet->name, pSet->name, | |
| 881 | + pSet->var!=0 ? pSet->var : pSet->name, | |
| 882 | + pSet->def[0]=='1'); | |
| 883 | + @ <br /> | |
| 884 | + } | |
| 885 | + } | |
| 886 | + @ </td><td width="30"></td><td valign="top"> | |
| 887 | + for(pSet=ctrlSettings; pSet->name!=0; pSet++){ | |
| 888 | + if( pSet->width!=0 ){ | |
| 889 | + entry_attribute(pSet->name, /*pSet->width*/ 40, pSet->name, | |
| 890 | + pSet->var!=0 ? pSet->var : pSet->name, | |
| 891 | + (char*)pSet->def); | |
| 892 | + @ <br /> | |
| 893 | + } | |
| 894 | + } | |
| 895 | + @ </tr></table> | |
| 896 | + @ <p><input type="submit" name="submit" value="Apply Changes" /></p> | |
| 897 | + @ </div></form> | |
| 898 | + @ <hr /><p> | |
| 899 | + @ These settings work in the same way, as the <kbd>set</kbd> commandline:<br> | |
| 900 | + @ <pre>%s(zHelp_setting_cmd)</pre></p> | |
| 901 | + db_end_transaction(0); | |
| 902 | + style_footer(); | |
| 903 | +} | |
| 849 | 904 | |
| 850 | 905 | /* |
| 851 | 906 | ** WEBPAGE: setup_config |
| 852 | 907 | */ |
| 853 | 908 | void setup_config(void){ |
| 854 | 909 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -19,10 +19,17 @@ | |
| 19 | */ |
| 20 | #include <assert.h> |
| 21 | #include "config.h" |
| 22 | #include "setup.h" |
| 23 | |
| 24 | |
| 25 | /* |
| 26 | ** Output a single entry for a menu generated using an HTML table. |
| 27 | ** If zLink is not NULL or an empty string, then it is the page that |
| 28 | ** the menu entry will hyperlink to. If zLink is NULL or "", then |
| @@ -57,10 +64,12 @@ | |
| 57 | "Grant privileges to individual users."); |
| 58 | setup_menu_entry("Access", "setup_access", |
| 59 | "Control access settings."); |
| 60 | setup_menu_entry("Configuration", "setup_config", |
| 61 | "Configure the WWW components of the repository"); |
| 62 | setup_menu_entry("Timeline", "setup_timeline", |
| 63 | "Timeline display preferences"); |
| 64 | setup_menu_entry("Tickets", "tktsetup", |
| 65 | "Configure the trouble-ticketing system for this repository"); |
| 66 | setup_menu_entry("Skins", "setup_skin", |
| @@ -844,10 +853,56 @@ | |
| 844 | @ <p><input type="submit" name="submit" value="Apply Changes" /></p> |
| 845 | @ </div></form> |
| 846 | db_end_transaction(0); |
| 847 | style_footer(); |
| 848 | } |
| 849 | |
| 850 | /* |
| 851 | ** WEBPAGE: setup_config |
| 852 | */ |
| 853 | void setup_config(void){ |
| 854 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -19,10 +19,17 @@ | |
| 19 | */ |
| 20 | #include <assert.h> |
| 21 | #include "config.h" |
| 22 | #include "setup.h" |
| 23 | |
| 24 | /* |
| 25 | ** The table of web pages supported by this application is generated |
| 26 | ** automatically by the "mkindex" program and written into a file |
| 27 | ** named "page_index.h". We include that file here to get access |
| 28 | ** to the table. |
| 29 | */ |
| 30 | #include "page_index.h" |
| 31 | |
| 32 | /* |
| 33 | ** Output a single entry for a menu generated using an HTML table. |
| 34 | ** If zLink is not NULL or an empty string, then it is the page that |
| 35 | ** the menu entry will hyperlink to. If zLink is NULL or "", then |
| @@ -57,10 +64,12 @@ | |
| 64 | "Grant privileges to individual users."); |
| 65 | setup_menu_entry("Access", "setup_access", |
| 66 | "Control access settings."); |
| 67 | setup_menu_entry("Configuration", "setup_config", |
| 68 | "Configure the WWW components of the repository"); |
| 69 | setup_menu_entry("Settings", "setup_settings", |
| 70 | "Web interface to the \"fossil settings\" command"); |
| 71 | setup_menu_entry("Timeline", "setup_timeline", |
| 72 | "Timeline display preferences"); |
| 73 | setup_menu_entry("Tickets", "tktsetup", |
| 74 | "Configure the trouble-ticketing system for this repository"); |
| 75 | setup_menu_entry("Skins", "setup_skin", |
| @@ -844,10 +853,56 @@ | |
| 853 | @ <p><input type="submit" name="submit" value="Apply Changes" /></p> |
| 854 | @ </div></form> |
| 855 | db_end_transaction(0); |
| 856 | style_footer(); |
| 857 | } |
| 858 | |
| 859 | /* |
| 860 | ** WEBPAGE: setup_settings |
| 861 | */ |
| 862 | void setup_settings(void){ |
| 863 | struct stControlSettings const *pSet; |
| 864 | |
| 865 | login_check_credentials(); |
| 866 | if( !g.okSetup ){ |
| 867 | login_needed(); |
| 868 | } |
| 869 | |
| 870 | style_header("Settings"); |
| 871 | db_begin_transaction(); |
| 872 | @ <p>This page provides a simple interface to the "fossil setting" command. |
| 873 | @ See the "fossil help setting" output below for further information on |
| 874 | @ the meaning of each setting.</p><hr /> |
| 875 | @ <form action="%s(g.zBaseURL)/setup_settings" method="post"><div> |
| 876 | @ <table border="0"><tr><td valign="top"> |
| 877 | login_insert_csrf_secret(); |
| 878 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 879 | if( pSet->width==0 ){ |
| 880 | onoff_attribute(pSet->name, pSet->name, |
| 881 | pSet->var!=0 ? pSet->var : pSet->name, |
| 882 | pSet->def[0]=='1'); |
| 883 | @ <br /> |
| 884 | } |
| 885 | } |
| 886 | @ </td><td width="30"></td><td valign="top"> |
| 887 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 888 | if( pSet->width!=0 ){ |
| 889 | entry_attribute(pSet->name, /*pSet->width*/ 40, pSet->name, |
| 890 | pSet->var!=0 ? pSet->var : pSet->name, |
| 891 | (char*)pSet->def); |
| 892 | @ <br /> |
| 893 | } |
| 894 | } |
| 895 | @ </tr></table> |
| 896 | @ <p><input type="submit" name="submit" value="Apply Changes" /></p> |
| 897 | @ </div></form> |
| 898 | @ <hr /><p> |
| 899 | @ These settings work in the same way, as the <kbd>set</kbd> commandline:<br> |
| 900 | @ <pre>%s(zHelp_setting_cmd)</pre></p> |
| 901 | db_end_transaction(0); |
| 902 | style_footer(); |
| 903 | } |
| 904 | |
| 905 | /* |
| 906 | ** WEBPAGE: setup_config |
| 907 | */ |
| 908 | void setup_config(void){ |
| 909 |
+4
-2
| --- src/style.c | ||
| +++ src/style.c | ||
| @@ -355,10 +355,11 @@ | ||
| 355 | 355 | @ font-size: 1em; font-weight: normal; |
| 356 | 356 | @ padding: .25em; |
| 357 | 357 | @ margin: .2em 0 .2em 0; |
| 358 | 358 | @ float: left; |
| 359 | 359 | @ clear: left; |
| 360 | +@ white-space: nowrap; | |
| 360 | 361 | @ } |
| 361 | 362 | @ |
| 362 | 363 | @ /* The footer at the very bottom of the page */ |
| 363 | 364 | @ div.footer { |
| 364 | 365 | @ font-size: 0.8em; |
| @@ -520,12 +521,13 @@ | ||
| 520 | 521 | }, |
| 521 | 522 | { "table.captcha", |
| 522 | 523 | "format for the layout table, used for the captcha display", |
| 523 | 524 | @ margin: auto; |
| 524 | 525 | @ padding: 10px; |
| 525 | - @ outline-width: 1; | |
| 526 | - @ outline-style: double; | |
| 526 | + @ border-width: 1; | |
| 527 | + @ border-style: double; | |
| 528 | + @ bordor-color: black; | |
| 527 | 529 | }, |
| 528 | 530 | { "td.login_out_label", |
| 529 | 531 | "format for the label cells in the login/out table", |
| 530 | 532 | @ text-align: center; |
| 531 | 533 | }, |
| 532 | 534 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -355,10 +355,11 @@ | |
| 355 | @ font-size: 1em; font-weight: normal; |
| 356 | @ padding: .25em; |
| 357 | @ margin: .2em 0 .2em 0; |
| 358 | @ float: left; |
| 359 | @ clear: left; |
| 360 | @ } |
| 361 | @ |
| 362 | @ /* The footer at the very bottom of the page */ |
| 363 | @ div.footer { |
| 364 | @ font-size: 0.8em; |
| @@ -520,12 +521,13 @@ | |
| 520 | }, |
| 521 | { "table.captcha", |
| 522 | "format for the layout table, used for the captcha display", |
| 523 | @ margin: auto; |
| 524 | @ padding: 10px; |
| 525 | @ outline-width: 1; |
| 526 | @ outline-style: double; |
| 527 | }, |
| 528 | { "td.login_out_label", |
| 529 | "format for the label cells in the login/out table", |
| 530 | @ text-align: center; |
| 531 | }, |
| 532 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -355,10 +355,11 @@ | |
| 355 | @ font-size: 1em; font-weight: normal; |
| 356 | @ padding: .25em; |
| 357 | @ margin: .2em 0 .2em 0; |
| 358 | @ float: left; |
| 359 | @ clear: left; |
| 360 | @ white-space: nowrap; |
| 361 | @ } |
| 362 | @ |
| 363 | @ /* The footer at the very bottom of the page */ |
| 364 | @ div.footer { |
| 365 | @ font-size: 0.8em; |
| @@ -520,12 +521,13 @@ | |
| 521 | }, |
| 522 | { "table.captcha", |
| 523 | "format for the layout table, used for the captcha display", |
| 524 | @ margin: auto; |
| 525 | @ padding: 10px; |
| 526 | @ border-width: 1; |
| 527 | @ border-style: double; |
| 528 | @ bordor-color: black; |
| 529 | }, |
| 530 | { "td.login_out_label", |
| 531 | "format for the label cells in the login/out table", |
| 532 | @ text-align: center; |
| 533 | }, |
| 534 |
+3
-1
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -347,10 +347,11 @@ | ||
| 347 | 347 | if( pGraph && pGraph->nErr==0 ){ |
| 348 | 348 | GraphRow *pRow; |
| 349 | 349 | int i; |
| 350 | 350 | char cSep; |
| 351 | 351 | @ <script type="text/JavaScript"> |
| 352 | + @ /* <![CDATA[ */ | |
| 352 | 353 | cgi_printf("var rowinfo = [\n"); |
| 353 | 354 | for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){ |
| 354 | 355 | cgi_printf("{id:\"m%d\",bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,au:", |
| 355 | 356 | pRow->idx, |
| 356 | 357 | pRow->zBgClr, |
| @@ -496,11 +497,11 @@ | ||
| 496 | 497 | @ } |
| 497 | 498 | @ var btm = absoluteY("grbtm") + 10 - canvasY; |
| 498 | 499 | @ if( btm<32768 ){ |
| 499 | 500 | @ canvasDiv.innerHTML = '<canvas id="timeline-canvas" '+ |
| 500 | 501 | @ 'style="position:absolute;left:'+(left-5)+'px;"' + |
| 501 | - @ ' width="'+width+'" height="'+btm+'"></canvas>'; | |
| 502 | + @ ' width="'+width+'" height="'+btm+'"><'+'/canvas>'; | |
| 502 | 503 | @ realCanvas = document.getElementById('timeline-canvas'); |
| 503 | 504 | @ }else{ |
| 504 | 505 | @ realCanvas = 0; |
| 505 | 506 | @ } |
| 506 | 507 | @ var context; |
| @@ -528,10 +529,11 @@ | ||
| 528 | 529 | @ lastY = h; |
| 529 | 530 | @ } |
| 530 | 531 | @ setTimeout("checkHeight();", 1000); |
| 531 | 532 | @ } |
| 532 | 533 | @ checkHeight(); |
| 534 | + @ /* ]]> */ | |
| 533 | 535 | @ </script> |
| 534 | 536 | } |
| 535 | 537 | } |
| 536 | 538 | |
| 537 | 539 | /* |
| 538 | 540 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -347,10 +347,11 @@ | |
| 347 | if( pGraph && pGraph->nErr==0 ){ |
| 348 | GraphRow *pRow; |
| 349 | int i; |
| 350 | char cSep; |
| 351 | @ <script type="text/JavaScript"> |
| 352 | cgi_printf("var rowinfo = [\n"); |
| 353 | for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){ |
| 354 | cgi_printf("{id:\"m%d\",bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,au:", |
| 355 | pRow->idx, |
| 356 | pRow->zBgClr, |
| @@ -496,11 +497,11 @@ | |
| 496 | @ } |
| 497 | @ var btm = absoluteY("grbtm") + 10 - canvasY; |
| 498 | @ if( btm<32768 ){ |
| 499 | @ canvasDiv.innerHTML = '<canvas id="timeline-canvas" '+ |
| 500 | @ 'style="position:absolute;left:'+(left-5)+'px;"' + |
| 501 | @ ' width="'+width+'" height="'+btm+'"></canvas>'; |
| 502 | @ realCanvas = document.getElementById('timeline-canvas'); |
| 503 | @ }else{ |
| 504 | @ realCanvas = 0; |
| 505 | @ } |
| 506 | @ var context; |
| @@ -528,10 +529,11 @@ | |
| 528 | @ lastY = h; |
| 529 | @ } |
| 530 | @ setTimeout("checkHeight();", 1000); |
| 531 | @ } |
| 532 | @ checkHeight(); |
| 533 | @ </script> |
| 534 | } |
| 535 | } |
| 536 | |
| 537 | /* |
| 538 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -347,10 +347,11 @@ | |
| 347 | if( pGraph && pGraph->nErr==0 ){ |
| 348 | GraphRow *pRow; |
| 349 | int i; |
| 350 | char cSep; |
| 351 | @ <script type="text/JavaScript"> |
| 352 | @ /* <![CDATA[ */ |
| 353 | cgi_printf("var rowinfo = [\n"); |
| 354 | for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){ |
| 355 | cgi_printf("{id:\"m%d\",bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,au:", |
| 356 | pRow->idx, |
| 357 | pRow->zBgClr, |
| @@ -496,11 +497,11 @@ | |
| 497 | @ } |
| 498 | @ var btm = absoluteY("grbtm") + 10 - canvasY; |
| 499 | @ if( btm<32768 ){ |
| 500 | @ canvasDiv.innerHTML = '<canvas id="timeline-canvas" '+ |
| 501 | @ 'style="position:absolute;left:'+(left-5)+'px;"' + |
| 502 | @ ' width="'+width+'" height="'+btm+'"><'+'/canvas>'; |
| 503 | @ realCanvas = document.getElementById('timeline-canvas'); |
| 504 | @ }else{ |
| 505 | @ realCanvas = 0; |
| 506 | @ } |
| 507 | @ var context; |
| @@ -528,10 +529,11 @@ | |
| 529 | @ lastY = h; |
| 530 | @ } |
| 531 | @ setTimeout("checkHeight();", 1000); |
| 532 | @ } |
| 533 | @ checkHeight(); |
| 534 | @ /* ]]> */ |
| 535 | @ </script> |
| 536 | } |
| 537 | } |
| 538 | |
| 539 | /* |
| 540 |
+1
-4
| --- src/wikiformat.c | ||
| +++ src/wikiformat.c | ||
| @@ -745,13 +745,10 @@ | ||
| 745 | 745 | static void renderMarkup(Blob *pOut, ParsedMarkup *p){ |
| 746 | 746 | int i; |
| 747 | 747 | if( p->endTag ){ |
| 748 | 748 | blob_appendf(pOut, "</%s>", aMarkup[p->iCode].zName); |
| 749 | 749 | }else{ |
| 750 | - /* Close active paragraph for several elements, which are not allowed | |
| 751 | - ** in paragraphs in XHTML. | |
| 752 | - */ | |
| 753 | 750 | blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName); |
| 754 | 751 | for(i=0; i<p->nAttr; i++){ |
| 755 | 752 | blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iACode].zName); |
| 756 | 753 | if( p->aAttr[i].zValue ){ |
| 757 | 754 | const char *zVal = p->aAttr[i].zValue; |
| @@ -893,11 +890,11 @@ | ||
| 893 | 890 | ** Begin a new paragraph if that something that is needed. |
| 894 | 891 | */ |
| 895 | 892 | static void startAutoParagraph(Renderer *p){ |
| 896 | 893 | if( p->wantAutoParagraph==0 ) return; |
| 897 | 894 | if( p->wikiList==MARKUP_OL || p->wikiList==MARKUP_UL ) return; |
| 898 | - blob_appendf(p->pOut, "<p type=\"auto\">", -1); | |
| 895 | + blob_appendf(p->pOut, "<p>", -1); | |
| 899 | 896 | pushStack(p, MARKUP_P); |
| 900 | 897 | p->wantAutoParagraph = 0; |
| 901 | 898 | p->inAutoParagraph = 1; |
| 902 | 899 | } |
| 903 | 900 | |
| 904 | 901 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -745,13 +745,10 @@ | |
| 745 | static void renderMarkup(Blob *pOut, ParsedMarkup *p){ |
| 746 | int i; |
| 747 | if( p->endTag ){ |
| 748 | blob_appendf(pOut, "</%s>", aMarkup[p->iCode].zName); |
| 749 | }else{ |
| 750 | /* Close active paragraph for several elements, which are not allowed |
| 751 | ** in paragraphs in XHTML. |
| 752 | */ |
| 753 | blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName); |
| 754 | for(i=0; i<p->nAttr; i++){ |
| 755 | blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iACode].zName); |
| 756 | if( p->aAttr[i].zValue ){ |
| 757 | const char *zVal = p->aAttr[i].zValue; |
| @@ -893,11 +890,11 @@ | |
| 893 | ** Begin a new paragraph if that something that is needed. |
| 894 | */ |
| 895 | static void startAutoParagraph(Renderer *p){ |
| 896 | if( p->wantAutoParagraph==0 ) return; |
| 897 | if( p->wikiList==MARKUP_OL || p->wikiList==MARKUP_UL ) return; |
| 898 | blob_appendf(p->pOut, "<p type=\"auto\">", -1); |
| 899 | pushStack(p, MARKUP_P); |
| 900 | p->wantAutoParagraph = 0; |
| 901 | p->inAutoParagraph = 1; |
| 902 | } |
| 903 | |
| 904 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -745,13 +745,10 @@ | |
| 745 | static void renderMarkup(Blob *pOut, ParsedMarkup *p){ |
| 746 | int i; |
| 747 | if( p->endTag ){ |
| 748 | blob_appendf(pOut, "</%s>", aMarkup[p->iCode].zName); |
| 749 | }else{ |
| 750 | blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName); |
| 751 | for(i=0; i<p->nAttr; i++){ |
| 752 | blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iACode].zName); |
| 753 | if( p->aAttr[i].zValue ){ |
| 754 | const char *zVal = p->aAttr[i].zValue; |
| @@ -893,11 +890,11 @@ | |
| 890 | ** Begin a new paragraph if that something that is needed. |
| 891 | */ |
| 892 | static void startAutoParagraph(Renderer *p){ |
| 893 | if( p->wantAutoParagraph==0 ) return; |
| 894 | if( p->wikiList==MARKUP_OL || p->wikiList==MARKUP_UL ) return; |
| 895 | blob_appendf(p->pOut, "<p>", -1); |
| 896 | pushStack(p, MARKUP_P); |
| 897 | p->wantAutoParagraph = 0; |
| 898 | p->inAutoParagraph = 1; |
| 899 | } |
| 900 | |
| 901 |