@@ -2,7 +2,7 @@ $!===========================================================================
2
2
$ THIS_FILE = f$elem(0,";",f$env("procedure"))
3
3
$ USAGE_ARGS = "[libPath] [outFile] [elemList] [classList] [classBranchXref]"
4
4
$ THIS_FACILITY = "EXPORTCMS"
5
- $ VERSION = "0.8 .0"
5
+ $ VERSION = "0.9 .0"
6
6
$ COPYRIGHT = "Copyright (c) 2015, Artur Shepilko, <
[email protected] >."
7
7
$!---------------------------------------------------------------------------
8
8
$! For Usage -- run with ? (?? for usage details and license)
@@ -107,11 +107,23 @@ $ libPath = ""
107
107
$ goto EXIT_GET_ARGS
108
108
$ endif
109
109
$
110
- $ libName = f$edit(libPath,"LOWERCASE") - "]" -
111
- - f$edit( f$parse(libPath - "]" + ".-]") - "].;", "LOWERCASE" ) - "."
110
+ $ !!-- Get CMS lib name from path (DEV:[LIBNAME] or DEV:[DIR.LIBNAME])
111
+ $ !!-- OR get it from device name when a terminal device (DEV: or DEV:[000000])
112
+ $ !!--
113
+ $ if (libPath - "]" .eqs. libPath -
114
+ .or. libPath - "[000000]" .nes. libPath)
115
+ $ then
116
+ $ libDirName = f$edit(libPath, "LOWERCASE") - "[000000]" - ":"
117
+ $ else
118
+ $ libDirName = f$edit(libPath, "LOWERCASE") - "]" -
119
+ - f$edit(f$parse(libPath - "]" + ".-]",,,,"SYNTAX_ONLY") -
120
+ - "000000].;" - "].;", "LOWERCASE") - "000000." - "."
121
+ $ endif
112
122
$!
113
123
$ expFile = p2
114
- $ if (expFile .eqs. "") then expFile = f$parse(libName, DEFAULT_EXP_FILE) - ";"
124
+ $ if (expFile .eqs. "" -
125
+ .or. f$parse(expFile,,,"TYPE") .eqs. ".") then -
126
+ expFile = f$parse(libName, DEFAULT_EXP_FILE) - ";"
115
127
$!
116
128
$ elemList = p3
117
129
$ if (elemList .eqs. "") then elemList = DEFAULT_ELEM_LIST
@@ -761,12 +773,22 @@ $ return !GOSUB_WRITE_GIT_TAG
761
773
$!-------------------------------
762
774
$GOSUB_WRITE_GIT_BLOB:
763
775
$ dbgtrace "GOSUB_WRITE_GIT_BLOB"
764
- $!! ARGS: histBlobId,
776
+ $!! ARGS: curHistElem,
777
+ $!! curHistGen,
778
+ $!! histBlobId,
765
779
$!! blobFile
766
780
$!
767
781
$
768
- $ gitBlobDataSize = (f$file(blobFile, "EOF") - 1) * f$file(blobFile,"BLS") -
769
- + f$file(blobFile,"FFB")
782
+ $ blockSize = f$file(blobFile,"BLS")
783
+ $ firstFreeByte = f$file(blobFile,"FFB")
784
+ $
785
+ $ gitBlobDataSize = f$file(blobFile, "EOF") * blockSize
786
+ $ if (firstFreeByte .gt. 0) then -
787
+ gitBlobDataSize = gitBlobDataSize - blockSize + firstFreeByte
788
+ $
789
+ $ if (gitBlobDataSize .eq. 0) then -
790
+ logmsg "W|EMPTYFILE: exporting a zero-size generation ",-
791
+ curHistElem," /GEN=", curHistGen
770
792
$!
771
793
$ !!-- git-fast blob
772
794
$ !!--
853
875
$ g_libPath == f$edit(f$elem(0,CHAR_DBLQUOTE,g_libhistCommand),"TRIM,UPCASE") -
854
876
- "CREATE LIBRARY "
855
877
$!
856
- $ libDirName = g_libPath - "]" -
857
- - (f$parse(g_libPath - "]" + ".-]",,,,"SYNTAX_ONLY") - "].;") - "."
878
+ $ !!-- Get CMS lib name from path (DEV:[LIBNAME] or DEV:[DIR.LIBNAME])
879
+ $ !!-- OR get it from device name when a terminal device (DEV: or DEV:[000000])
880
+ $ !!--
881
+ $ if (g_libPath - "]" .eqs. g_libPath -
882
+ .or. g_libPath - "[000000]" .nes. g_libPath)
883
+ $ then
884
+ $ libDirName = f$edit(g_libPath, "LOWERCASE") - "[000000]" - ":"
885
+ $ else
886
+ $ libDirName = f$edit(g_libPath, "LOWERCASE") - "]" -
887
+ - f$edit(f$parse(g_libPath - "]" + ".-]",,,,"SYNTAX_ONLY") -
888
+ - "000000].;" - "].;", "LOWERCASE") - "000000." - "."
889
+ $ endif
858
890
$
859
- $ g_lib == f$edit(libDirName,"TRIM,LOWERCASE")
891
+ $ g_lib == f$edit(libDirName,"TRIM")
892
+ $ if (g_lib .eqs. "") then g_lib == "cmslib" !!-- DEFAULT
860
893
$
861
894
$ call GET_SEQTIME "''g_libTime'"
862
895
$ g_libSeqKey == g_seqTime
@@ -909,13 +942,29 @@ $ read/end=ENDDO_DESCGEN fDescGen line
909
942
$ read/end=ENDDO_DESCGEN fDescGen line
910
943
$ read/end=ENDDO_DESCGEN fDescGen line
911
944
$!
945
+ $ g_genIsMultilineRemark == ".FALSE."
946
+ $
912
947
$DO_DESCGEN:
913
948
$ line=""
914
949
$ read/end=ENDDO_DESCGEN fDescGen line
915
950
$ if (line .eqs. "") then goto NEXT_DESCGEN
916
951
$!
952
+ $ !! -- Truncate multi-line remarks to a single line
953
+ $ !! --
954
+ $ if (g_genIsMultilineRemark)
955
+ $ then
956
+ $ g_genIsMultilineRemark == (f$extr(f$len(line)-1, 1, line) .nes. CHAR_DBLQUOTE)
957
+ $ goto DO_DESCGEN
958
+ $ endif
959
+ $!
917
960
$ call PARSE_GEN_REC
918
961
$ if (g_genIsElem) then elem = g_genElem
962
+ $ if (g_genIsMultilineRemark)
963
+ $ then
964
+ $ logmsg "W|TRUNCATED: multiline remark truncated for generation ",-
965
+ g_genElem, " /GEN=",g_gen
966
+ $ goto DO_DESCGEN
967
+ $ endif
919
968
$ if (g_gen .eqs. "") then goto NEXT_DESCGEN
920
969
$!
921
970
$ dbgmsg "DBG|DESC:genElem:",g_genElem,"|gen:",g_gen,"|",g_genUser,"|",g_genTime,"|",g_genRemark
@@ -1197,14 +1246,29 @@ $ read/end=ENDDO_ANCGEN fAncGen line
1197
1246
$ read/end=ENDDO_ANCGEN fAncGen line
1198
1247
$!
1199
1248
$ genIdx = 0
1249
+ $ g_genIsMultilineRemark == ".FALSE."
1200
1250
$
1201
1251
$DO_ANCGEN:
1202
1252
$ line=""
1203
1253
$ read/end=ENDDO_ANCGEN fAncGen line
1204
1254
$ if (line .eqs. "") then goto NEXT_ANCGEN
1205
1255
$!
1256
+ $ !! -- Truncate multi-line remarks to a single line
1257
+ $ !! --
1258
+ $ if (g_genIsMultilineRemark)
1259
+ $ then
1260
+ $ g_genIsMultilineRemark == (f$extr(f$len(line)-1, 1, line) .nes. CHAR_DBLQUOTE)
1261
+ $ goto DO_ANCGEN
1262
+ $ endif
1263
+ $!
1206
1264
$ call PARSE_GEN_REC
1207
1265
$ if (g_genIsElem) then elem = g_genElem
1266
+ $ if (g_genIsMultilineRemark)
1267
+ $ then
1268
+ $ logmsg "W|TRUNCATED: multiline remark truncated for generation ",-
1269
+ g_genElem, " /GEN=",g_gen
1270
+ $ goto DO_ANCGEN
1271
+ $ endif
1208
1272
$ if (g_gen .eqs. "") then goto NEXT_ANCGEN
1209
1273
$!
1210
1274
$ dbgmsg "DBG|ANC:genElem:",g_genElem,"|gen:",g_gen,"|",g_genUser,"|",g_genTime,"|",g_genRemark
@@ -1526,6 +1590,7 @@ $ g_gen == ""
1526
1590
$ g_genTime == ""
1527
1591
$ g_genUser == ""
1528
1592
$ g_genRemark == ""
1593
+ $ g_genIsMultilineRemark == ".FALSE."
1529
1594
$
1530
1595
$ g_genIsElem == ( f$extr(0, 1, genRec) .nes. CHAR_SPACE )
1531
1596
$!
@@ -1546,6 +1611,8 @@ $ g_genTime == f$elem(2, CHAR_SPACE, xline) -
1546
1611
+ ":" + f$elem(3, CHAR_SPACE, xline)
1547
1612
$ g_genUser == f$elem(4, CHAR_SPACE, xline)
1548
1613
$ g_genRemark == f$elem(1, CHAR_DBLQUOTE, xline)
1614
+ $
1615
+ $ g_genIsMultilineRemark == (f$extr(f$len(genRec)-1, 1, genRec) .nes. CHAR_DBLQUOTE)
1549
1616
$!
1550
1617
$EXIT:
1551
1618
$ exit !PARSE_GEN_REC
0 commit comments