Fossil SCM

Merge from trunk.

brickviking 2025-03-28 23:28 bv-infotool merge
Commit 13c9f74bc8af9b0033da44d0035a881f9c17e8aac8e412edd2d2a4c3164e2094
--- skins/xekri/css.txt
+++ skins/xekri/css.txt
@@ -20,10 +20,11 @@
2020
font-size: 1em;
2121
min-height: 100%;
2222
}
2323
2424
body {
25
+ background-color: #333;
2526
margin: 0;
2627
padding: 0;
2728
text-size-adjust: none;
2829
}
2930
@@ -882,10 +883,110 @@
882883
883884
/* the format for the timeline version links */
884885
a.timelineHistLink {
885886
}
886887
888
+/* Timeline graph style taken from Ardoise, with
889
+** minor adjustments (2025-03-28) */
890
+.tl-canvas {
891
+ margin: 0 6px 0 10px
892
+}
893
+.tl-rail {
894
+ width: 18px
895
+}
896
+.tl-mergeoffset {
897
+ width: 2px
898
+}
899
+.tl-nodemark {
900
+ margin-top: .8em
901
+}
902
+.tl-node {
903
+ width: 10px;
904
+ height: 10px;
905
+ border: 1px solid #bbb;
906
+ background: #111;
907
+ cursor: pointer
908
+}
909
+.tl-node.leaf:after {
910
+ content: '';
911
+ position: absolute;
912
+ top: 3px;
913
+ left: 3px;
914
+ width: 4px;
915
+ height: 4px;
916
+ background: #bbb
917
+}
918
+.tl-node.closed-leaf svg {
919
+ position: absolute;
920
+ top: 0px;
921
+ left: 0px;
922
+ width: 10px;
923
+ height: 10px;
924
+ color: #bbb;
925
+}
926
+.tl-node.sel:after {
927
+ content: '';
928
+ position: absolute;
929
+ top: 1px;
930
+ left: 1px;
931
+ width: 8px;
932
+ height: 8px;
933
+ background: #ff8000
934
+}
935
+.tl-arrow {
936
+ width: 0;
937
+ height: 0;
938
+ transform: scale(.999);
939
+ border: 0 solid transparent
940
+}
941
+.tl-arrow.u {
942
+ margin-top: -1px;
943
+ border-width: 0 3px;
944
+ border-bottom: 7px solid
945
+}
946
+.tl-arrow.u.sm {
947
+ border-bottom: 5px solid #bbb
948
+}
949
+.tl-line {
950
+ background: #bbb;
951
+ width: 2px
952
+}
953
+.tl-arrow.merge {
954
+ height: 1px;
955
+ border-width: 2px 0
956
+}
957
+.tl-arrow.merge.l {
958
+ border-right: 3px solid #bbb
959
+}
960
+.tl-arrow.merge.r {
961
+ border-left: 3px solid #bbb
962
+}
963
+.tl-line.merge {
964
+ width: 1px
965
+}
966
+.tl-arrow.cherrypick {
967
+ height: 1px;
968
+ border-width: 2px 0;
969
+}
970
+.tl-arrow.cherrypick.l {
971
+ border-right: 3px solid #bbb;
972
+}
973
+.tl-arrow.cherrypick.r {
974
+ border-left: 3px solid #bbb;
975
+}
976
+.tl-line.cherrypick.h {
977
+ width: 0px;
978
+ border-top: 1px dashed #bbb;
979
+ border-left: 0px dashed #bbb;
980
+ background: rgba(255,255,255,0);
981
+}
982
+.tl-line.cherrypick.v {
983
+ width: 0px;
984
+ border-top: 0px dashed #bbb;
985
+ border-left: 1px dashed #bbb;
986
+ background: rgba(255,255,255,0);
987
+}
887988
888989
/**************************************
889990
* User Edit
890991
*/
891992
892993
--- skins/xekri/css.txt
+++ skins/xekri/css.txt
@@ -20,10 +20,11 @@
20 font-size: 1em;
21 min-height: 100%;
22 }
23
24 body {
 
25 margin: 0;
26 padding: 0;
27 text-size-adjust: none;
28 }
29
@@ -882,10 +883,110 @@
882
883 /* the format for the timeline version links */
884 a.timelineHistLink {
885 }
886
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
887
888 /**************************************
889 * User Edit
890 */
891
892
--- skins/xekri/css.txt
+++ skins/xekri/css.txt
@@ -20,10 +20,11 @@
20 font-size: 1em;
21 min-height: 100%;
22 }
23
24 body {
25 background-color: #333;
26 margin: 0;
27 padding: 0;
28 text-size-adjust: none;
29 }
30
@@ -882,10 +883,110 @@
883
884 /* the format for the timeline version links */
885 a.timelineHistLink {
886 }
887
888 /* Timeline graph style taken from Ardoise, with
889 ** minor adjustments (2025-03-28) */
890 .tl-canvas {
891 margin: 0 6px 0 10px
892 }
893 .tl-rail {
894 width: 18px
895 }
896 .tl-mergeoffset {
897 width: 2px
898 }
899 .tl-nodemark {
900 margin-top: .8em
901 }
902 .tl-node {
903 width: 10px;
904 height: 10px;
905 border: 1px solid #bbb;
906 background: #111;
907 cursor: pointer
908 }
909 .tl-node.leaf:after {
910 content: '';
911 position: absolute;
912 top: 3px;
913 left: 3px;
914 width: 4px;
915 height: 4px;
916 background: #bbb
917 }
918 .tl-node.closed-leaf svg {
919 position: absolute;
920 top: 0px;
921 left: 0px;
922 width: 10px;
923 height: 10px;
924 color: #bbb;
925 }
926 .tl-node.sel:after {
927 content: '';
928 position: absolute;
929 top: 1px;
930 left: 1px;
931 width: 8px;
932 height: 8px;
933 background: #ff8000
934 }
935 .tl-arrow {
936 width: 0;
937 height: 0;
938 transform: scale(.999);
939 border: 0 solid transparent
940 }
941 .tl-arrow.u {
942 margin-top: -1px;
943 border-width: 0 3px;
944 border-bottom: 7px solid
945 }
946 .tl-arrow.u.sm {
947 border-bottom: 5px solid #bbb
948 }
949 .tl-line {
950 background: #bbb;
951 width: 2px
952 }
953 .tl-arrow.merge {
954 height: 1px;
955 border-width: 2px 0
956 }
957 .tl-arrow.merge.l {
958 border-right: 3px solid #bbb
959 }
960 .tl-arrow.merge.r {
961 border-left: 3px solid #bbb
962 }
963 .tl-line.merge {
964 width: 1px
965 }
966 .tl-arrow.cherrypick {
967 height: 1px;
968 border-width: 2px 0;
969 }
970 .tl-arrow.cherrypick.l {
971 border-right: 3px solid #bbb;
972 }
973 .tl-arrow.cherrypick.r {
974 border-left: 3px solid #bbb;
975 }
976 .tl-line.cherrypick.h {
977 width: 0px;
978 border-top: 1px dashed #bbb;
979 border-left: 0px dashed #bbb;
980 background: rgba(255,255,255,0);
981 }
982 .tl-line.cherrypick.v {
983 width: 0px;
984 border-top: 0px dashed #bbb;
985 border-left: 1px dashed #bbb;
986 background: rgba(255,255,255,0);
987 }
988
989 /**************************************
990 * User Edit
991 */
992
993
+33 -13
--- src/color.c
+++ src/color.c
@@ -259,19 +259,38 @@
259259
if( iRGB<0 ) return 0;
260260
r = (iRGB>>16) & 0xff;
261261
g = (iRGB>>8) & 0xff;
262262
b = iRGB & 0xff;
263263
if( fg==1 ){
264
- const int K = 70;
265
- r = (K*r)/255 + (255-K);
266
- g = (K*g)/255 + (255-K);
267
- b = (K*b)/255 + (255-K);
264
+ /* Dark text on a light background. Adjust so that
265
+ ** no color component is less than 255-K, resulting in
266
+ ** a pastel background color. Color adjustment is quadratic
267
+ ** so that colors that are further out of range have a greater
268
+ ** adjustment. */
269
+ const int K = 79;
270
+ int k, x, m;
271
+ m = r<g ? r : g;
272
+ if( m>b ) m = b;
273
+ k = (m*m)/255 + K;
274
+ x = 255 - k;
275
+ r = (k*r)/255 + x;
276
+ g = (k*g)/255 + x;
277
+ b = (k*b)/255 + x;
268278
}else{
269
- const int K = 90;
270
- r = (K*r)/255;
271
- g = (K*g)/255;
272
- b = (K*b)/255;
279
+ /* Light text on a dark background. Adjust so that
280
+ ** no color component is greater than K, resulting in
281
+ ** a low-intensity, low-saturation background color.
282
+ ** The color adjustment is quadratic so that colors that
283
+ ** are further out of range have a greater adjustment. */
284
+ const int K = 112;
285
+ int k, m;
286
+ m = r>g ? r : g;
287
+ if( m<b ) m = b;
288
+ k = 255 - (255-K)*(m*m)/65025;
289
+ r = (k*r)/255;
290
+ g = (k*g)/255;
291
+ b = (k*b)/255;
273292
}
274293
sqlite3_snprintf(8, zColor, "#%02x%02x%02x", r,g,b);
275294
return zColor;
276295
}
277296
@@ -451,19 +470,20 @@
451470
const char *zBG; /* Actual color provided */
452471
const char *zBg1;
453472
char zNm[10];
454473
static const char *azDflt[] = {
455474
"red", "orange", "yellow", "green", "blue", "indigo", "violet",
456
- "tan", "brown", "gray"
475
+ "tan", "brown", "gray",
457476
};
477
+ const int N = count(azDflt);
458478
int i, cnt, iClr, r, g, b;
459479
char *zFg;
460480
login_check_credentials();
461481
style_set_current_feature("test");
462482
style_header("Background Color Test");
463
- for(i=cnt=0; i<10; i++){
464
- sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
483
+ for(i=cnt=0; i<N; i++){
484
+ sqlite3_snprintf(sizeof(zNm),zNm,"b%c",'a'+i);
465485
zReq = PD(zNm,azDflt[i]);
466486
if( zReq==0 || zReq[0]==0 ) continue;
467487
if( cnt==0 ){
468488
@ <table border="1" cellspacing="0" cellpadding="10">
469489
@ <tr>
@@ -509,14 +529,14 @@
509529
@ <hr>
510530
}
511531
@ <form method="POST">
512532
@ <p>Enter CSS color names below and see them shifted into corresponding
513533
@ background colors above.</p>
514
- for(i=0; i<10; i++){
515
- sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
534
+ for(i=0; i<N; i++){
535
+ sqlite3_snprintf(sizeof(zNm),zNm,"b%c",'a'+i);
516536
@ <input type="text" size="30" name='%s(zNm)' \
517537
@ value='%h(PD(zNm,azDflt[i]))'><br>
518538
}
519539
@ <input type="submit" value="Submit">
520540
@ </form>
521541
style_finish_page();
522542
}
523543
--- src/color.c
+++ src/color.c
@@ -259,19 +259,38 @@
259 if( iRGB<0 ) return 0;
260 r = (iRGB>>16) & 0xff;
261 g = (iRGB>>8) & 0xff;
262 b = iRGB & 0xff;
263 if( fg==1 ){
264 const int K = 70;
265 r = (K*r)/255 + (255-K);
266 g = (K*g)/255 + (255-K);
267 b = (K*b)/255 + (255-K);
 
 
 
 
 
 
 
 
 
 
268 }else{
269 const int K = 90;
270 r = (K*r)/255;
271 g = (K*g)/255;
272 b = (K*b)/255;
 
 
 
 
 
 
 
 
 
273 }
274 sqlite3_snprintf(8, zColor, "#%02x%02x%02x", r,g,b);
275 return zColor;
276 }
277
@@ -451,19 +470,20 @@
451 const char *zBG; /* Actual color provided */
452 const char *zBg1;
453 char zNm[10];
454 static const char *azDflt[] = {
455 "red", "orange", "yellow", "green", "blue", "indigo", "violet",
456 "tan", "brown", "gray"
457 };
 
458 int i, cnt, iClr, r, g, b;
459 char *zFg;
460 login_check_credentials();
461 style_set_current_feature("test");
462 style_header("Background Color Test");
463 for(i=cnt=0; i<10; i++){
464 sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
465 zReq = PD(zNm,azDflt[i]);
466 if( zReq==0 || zReq[0]==0 ) continue;
467 if( cnt==0 ){
468 @ <table border="1" cellspacing="0" cellpadding="10">
469 @ <tr>
@@ -509,14 +529,14 @@
509 @ <hr>
510 }
511 @ <form method="POST">
512 @ <p>Enter CSS color names below and see them shifted into corresponding
513 @ background colors above.</p>
514 for(i=0; i<10; i++){
515 sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
516 @ <input type="text" size="30" name='%s(zNm)' \
517 @ value='%h(PD(zNm,azDflt[i]))'><br>
518 }
519 @ <input type="submit" value="Submit">
520 @ </form>
521 style_finish_page();
522 }
523
--- src/color.c
+++ src/color.c
@@ -259,19 +259,38 @@
259 if( iRGB<0 ) return 0;
260 r = (iRGB>>16) & 0xff;
261 g = (iRGB>>8) & 0xff;
262 b = iRGB & 0xff;
263 if( fg==1 ){
264 /* Dark text on a light background. Adjust so that
265 ** no color component is less than 255-K, resulting in
266 ** a pastel background color. Color adjustment is quadratic
267 ** so that colors that are further out of range have a greater
268 ** adjustment. */
269 const int K = 79;
270 int k, x, m;
271 m = r<g ? r : g;
272 if( m>b ) m = b;
273 k = (m*m)/255 + K;
274 x = 255 - k;
275 r = (k*r)/255 + x;
276 g = (k*g)/255 + x;
277 b = (k*b)/255 + x;
278 }else{
279 /* Light text on a dark background. Adjust so that
280 ** no color component is greater than K, resulting in
281 ** a low-intensity, low-saturation background color.
282 ** The color adjustment is quadratic so that colors that
283 ** are further out of range have a greater adjustment. */
284 const int K = 112;
285 int k, m;
286 m = r>g ? r : g;
287 if( m<b ) m = b;
288 k = 255 - (255-K)*(m*m)/65025;
289 r = (k*r)/255;
290 g = (k*g)/255;
291 b = (k*b)/255;
292 }
293 sqlite3_snprintf(8, zColor, "#%02x%02x%02x", r,g,b);
294 return zColor;
295 }
296
@@ -451,19 +470,20 @@
470 const char *zBG; /* Actual color provided */
471 const char *zBg1;
472 char zNm[10];
473 static const char *azDflt[] = {
474 "red", "orange", "yellow", "green", "blue", "indigo", "violet",
475 "tan", "brown", "gray",
476 };
477 const int N = count(azDflt);
478 int i, cnt, iClr, r, g, b;
479 char *zFg;
480 login_check_credentials();
481 style_set_current_feature("test");
482 style_header("Background Color Test");
483 for(i=cnt=0; i<N; i++){
484 sqlite3_snprintf(sizeof(zNm),zNm,"b%c",'a'+i);
485 zReq = PD(zNm,azDflt[i]);
486 if( zReq==0 || zReq[0]==0 ) continue;
487 if( cnt==0 ){
488 @ <table border="1" cellspacing="0" cellpadding="10">
489 @ <tr>
@@ -509,14 +529,14 @@
529 @ <hr>
530 }
531 @ <form method="POST">
532 @ <p>Enter CSS color names below and see them shifted into corresponding
533 @ background colors above.</p>
534 for(i=0; i<N; i++){
535 sqlite3_snprintf(sizeof(zNm),zNm,"b%c",'a'+i);
536 @ <input type="text" size="30" name='%s(zNm)' \
537 @ value='%h(PD(zNm,azDflt[i]))'><br>
538 }
539 @ <input type="submit" value="Submit">
540 @ </form>
541 style_finish_page();
542 }
543
--- src/graph.js
+++ src/graph.js
@@ -9,11 +9,10 @@
99
**
1010
** { "iTableId": INTEGER, // Table sequence number (NN)
1111
** "circleNodes": BOOLEAN, // True for circle nodes. False for squares
1212
** "showArrowheads": BOOLEAN, // True for arrowheads. False to omit
1313
** "iRailPitch": INTEGER, // Spacing between vertical lines (px)
14
-** "colorGraph": BOOLEAN, // True to put color on graph lines
1514
** "nomo": BOOLEAN, // True to join merge lines with rails
1615
** "iTopRow": INTEGER, // Index of top-most row in the graph
1716
** "omitDescenders": BOOLEAN, // Omit ancestor lines off bottom of screen
1817
** "fileDiff": BOOLEAN, // True for file diff. False for check-in
1918
** "scrollToSelect": BOOLEAN, // Scroll to selection on first render
2019
--- src/graph.js
+++ src/graph.js
@@ -9,11 +9,10 @@
9 **
10 ** { "iTableId": INTEGER, // Table sequence number (NN)
11 ** "circleNodes": BOOLEAN, // True for circle nodes. False for squares
12 ** "showArrowheads": BOOLEAN, // True for arrowheads. False to omit
13 ** "iRailPitch": INTEGER, // Spacing between vertical lines (px)
14 ** "colorGraph": BOOLEAN, // True to put color on graph lines
15 ** "nomo": BOOLEAN, // True to join merge lines with rails
16 ** "iTopRow": INTEGER, // Index of top-most row in the graph
17 ** "omitDescenders": BOOLEAN, // Omit ancestor lines off bottom of screen
18 ** "fileDiff": BOOLEAN, // True for file diff. False for check-in
19 ** "scrollToSelect": BOOLEAN, // Scroll to selection on first render
20
--- src/graph.js
+++ src/graph.js
@@ -9,11 +9,10 @@
9 **
10 ** { "iTableId": INTEGER, // Table sequence number (NN)
11 ** "circleNodes": BOOLEAN, // True for circle nodes. False for squares
12 ** "showArrowheads": BOOLEAN, // True for arrowheads. False to omit
13 ** "iRailPitch": INTEGER, // Spacing between vertical lines (px)
 
14 ** "nomo": BOOLEAN, // True to join merge lines with rails
15 ** "iTopRow": INTEGER, // Index of top-most row in the graph
16 ** "omitDescenders": BOOLEAN, // Omit ancestor lines off bottom of screen
17 ** "fileDiff": BOOLEAN, // True for file diff. False for check-in
18 ** "scrollToSelect": BOOLEAN, // Scroll to selection on first render
19
+10
--- src/setup.c
+++ src/setup.c
@@ -1003,10 +1003,20 @@
10031003
"timeline-hard-newlines", "thnl", 0, 0);
10041004
@ <p>In timeline displays, newline characters in check-in comments force
10051005
@ a line break on the display.
10061006
@ (Property: "timeline-hard-newlines")</p>
10071007
1008
+ @ <hr>
1009
+ onoff_attribute("Do not adjust user-selected background colors",
1010
+ "raw-bgcolor", "rbgc", 0, 0);
1011
+ @ <p>Fossil normally attempts to adjust the saturation and intensity of
1012
+ @ user-specified background colors on check-ins and branches so that the
1013
+ @ foreground text is easily readable on all skins. Enable this setting
1014
+ @ to omit that adjustment and use exactly the background color specified
1015
+ @ by users.
1016
+ @ (Property: "raw-bgcolor")</p>
1017
+
10081018
@ <hr>
10091019
onoff_attribute("Use Universal Coordinated Time (UTC)",
10101020
"timeline-utc", "utc", 1, 0);
10111021
@ <p>Show times as UTC (also sometimes called Greenwich Mean Time (GMT) or
10121022
@ Zulu) instead of in local time. On this server, local time is currently
10131023
--- src/setup.c
+++ src/setup.c
@@ -1003,10 +1003,20 @@
1003 "timeline-hard-newlines", "thnl", 0, 0);
1004 @ <p>In timeline displays, newline characters in check-in comments force
1005 @ a line break on the display.
1006 @ (Property: "timeline-hard-newlines")</p>
1007
 
 
 
 
 
 
 
 
 
 
1008 @ <hr>
1009 onoff_attribute("Use Universal Coordinated Time (UTC)",
1010 "timeline-utc", "utc", 1, 0);
1011 @ <p>Show times as UTC (also sometimes called Greenwich Mean Time (GMT) or
1012 @ Zulu) instead of in local time. On this server, local time is currently
1013
--- src/setup.c
+++ src/setup.c
@@ -1003,10 +1003,20 @@
1003 "timeline-hard-newlines", "thnl", 0, 0);
1004 @ <p>In timeline displays, newline characters in check-in comments force
1005 @ a line break on the display.
1006 @ (Property: "timeline-hard-newlines")</p>
1007
1008 @ <hr>
1009 onoff_attribute("Do not adjust user-selected background colors",
1010 "raw-bgcolor", "rbgc", 0, 0);
1011 @ <p>Fossil normally attempts to adjust the saturation and intensity of
1012 @ user-specified background colors on check-ins and branches so that the
1013 @ foreground text is easily readable on all skins. Enable this setting
1014 @ to omit that adjustment and use exactly the background color specified
1015 @ by users.
1016 @ (Property: "raw-bgcolor")</p>
1017
1018 @ <hr>
1019 onoff_attribute("Use Universal Coordinated Time (UTC)",
1020 "timeline-utc", "utc", 1, 0);
1021 @ <p>Show times as UTC (also sometimes called Greenwich Mean Time (GMT) or
1022 @ Zulu) instead of in local time. On this server, local time is currently
1023
--- src/statrep.c
+++ src/statrep.c
@@ -859,10 +859,13 @@
859859
** * f (forum post)
860860
** * w (wiki page change)
861861
** * t (ticket change)
862862
** * g (tag added or removed)
863863
** Defaulting to all event types.
864
+** from=DATETIME Consider only events after this timestamp (requires to)
865
+** to=DATETIME Consider only events before this timestamp (requires from)
866
+**
864867
**
865868
** The view-specific query parameters include:
866869
**
867870
** view=byweek:
868871
**
869872
--- src/statrep.c
+++ src/statrep.c
@@ -859,10 +859,13 @@
859 ** * f (forum post)
860 ** * w (wiki page change)
861 ** * t (ticket change)
862 ** * g (tag added or removed)
863 ** Defaulting to all event types.
 
 
 
864 **
865 ** The view-specific query parameters include:
866 **
867 ** view=byweek:
868 **
869
--- src/statrep.c
+++ src/statrep.c
@@ -859,10 +859,13 @@
859 ** * f (forum post)
860 ** * w (wiki page change)
861 ** * t (ticket change)
862 ** * g (tag added or removed)
863 ** Defaulting to all event types.
864 ** from=DATETIME Consider only events after this timestamp (requires to)
865 ** to=DATETIME Consider only events before this timestamp (requires from)
866 **
867 **
868 ** The view-specific query parameters include:
869 **
870 ** view=byweek:
871 **
872
+2 -2
--- src/winfile.c
+++ src/winfile.c
@@ -505,14 +505,14 @@
505505
fi2.FileId[1], fi2.FileId[0]);
506506
}
507507
}
508508
if( zFileId==0 ){
509509
if( GetFileInformationByHandle(hFile,&fi) ){
510
- ULARGE_INTEGER FileId = {
510
+ ULARGE_INTEGER FileId = {{
511511
/*.LowPart = */ fi.nFileIndexLow,
512512
/*.HighPart = */ fi.nFileIndexHigh
513
- };
513
+ }};
514514
zFileId = mprintf(
515515
"%08x/%016llx",
516516
fi.dwVolumeSerialNumber,(u64)FileId.QuadPart);
517517
}
518518
}
519519
--- src/winfile.c
+++ src/winfile.c
@@ -505,14 +505,14 @@
505 fi2.FileId[1], fi2.FileId[0]);
506 }
507 }
508 if( zFileId==0 ){
509 if( GetFileInformationByHandle(hFile,&fi) ){
510 ULARGE_INTEGER FileId = {
511 /*.LowPart = */ fi.nFileIndexLow,
512 /*.HighPart = */ fi.nFileIndexHigh
513 };
514 zFileId = mprintf(
515 "%08x/%016llx",
516 fi.dwVolumeSerialNumber,(u64)FileId.QuadPart);
517 }
518 }
519
--- src/winfile.c
+++ src/winfile.c
@@ -505,14 +505,14 @@
505 fi2.FileId[1], fi2.FileId[0]);
506 }
507 }
508 if( zFileId==0 ){
509 if( GetFileInformationByHandle(hFile,&fi) ){
510 ULARGE_INTEGER FileId = {{
511 /*.LowPart = */ fi.nFileIndexLow,
512 /*.HighPart = */ fi.nFileIndexHigh
513 }};
514 zFileId = mprintf(
515 "%08x/%016llx",
516 fi.dwVolumeSerialNumber,(u64)FileId.QuadPart);
517 }
518 }
519

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button