home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume18 / bibview / part13 < prev    next >
Encoding:
Internet Message Format  |  1992-08-26  |  50.3 KB

  1. Path: uunet!decwrl!elroy.jpl.nasa.gov!swrinde!mips!msi!dcmartin
  2. From: liebla@informatik.tu-muenchen.de (Armin Liebl)
  3. Newsgroups: comp.sources.x
  4. Subject: v18i111: bibview - BibTeX GUI, Part13/20
  5. Message-ID: <1992Aug27.161713.25846@msi.com>
  6. Date: 27 Aug 92 16:17:13 GMT
  7. References: <csx-18i099-bibview@uunet.UU.NET>
  8. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  9. Organization: Molecular Simulations, Inc.
  10. Lines: 1749
  11. Approved: dcmartin@msi.com
  12. Originator: dcmartin@fascet
  13.  
  14. Submitted-by: Armin Liebl <liebla@informatik.tu-muenchen.de>
  15. Posting-number: Volume 18, Issue 111
  16. Archive-name: bibview/part13
  17.  
  18. #!/bin/sh
  19. # this is part.13 (part 13 of a multipart archive)
  20. # do not concatenate these parts, unpack them in order with /bin/sh
  21. # file fb_res.h continued
  22. #
  23. if test ! -r _shar_seq_.tmp; then
  24.     echo 'Please unpack part 1 first!'
  25.     exit 1
  26. fi
  27. (read Scheck
  28.  if test "$Scheck" != 13; then
  29.     echo Please unpack part "$Scheck" next!
  30.     exit 1
  31.  else
  32.     exit 0
  33.  fi
  34. ) < _shar_seq_.tmp || exit 1
  35. if test ! -f _shar_wnt_.tmp; then
  36.     echo 'x - still skipping fb_res.h'
  37. else
  38. echo 'x - continuing file fb_res.h'
  39. sed 's/^X//' << 'SHAR_EOF' >> 'fb_res.h' &&
  40. "BibView*helpMenu*item4*label:        List Window",
  41. "BibView*helpMenu*item5*label:        Card Window",
  42. "BibView*helpMenu*item6*label:        Other Windows",
  43. "BibView*helpMenu*info*label:        Program Info",
  44. "BibView*bibWin.orientation:        vertical",
  45. "BibView*bibWin.width:            450",
  46. "BibView*bibWin.height:            350",
  47. "BibView*bibWin*showGrip:        false",
  48. "BibView*bibWin*commandBox.width:     450",
  49. "BibView*bibWin*commandBox.vSpace:     0",
  50. "BibView*bibWin*commandBox.hSpace:     0",
  51. "BibView*bibWin*commandBox.min:         21",
  52. "BibView*bibWin*commandBox*new.label:    New",
  53. "BibView*bibWin*new.menuName:        newMenu",
  54. "BibView*bibWin*newMenu.label:        New Menu",
  55. "BibView*bibWin*newMenu*item2*label:    Book",
  56. "BibView*bibWin*newMenu*item3*label:    Booklet",
  57. "BibView*bibWin*newMenu*item5*label:    Inbook",
  58. "BibView*bibWin*newMenu*item6*label:    Incollection",
  59. "BibView*bibWin*newMenu*item1*label:    Article",
  60. "BibView*bibWin*newMenu*item4*label:    Conference",
  61. "BibView*bibWin*newMenu*item12*label:    Proceedings",
  62. "BibView*bibWin*newMenu*item7*label:    Inproceedings",
  63. "BibView*bibWin*newMenu*item13*label:    Techreport",
  64. "BibView*bibWin*newMenu*item9*label:    Mastersthesis",
  65. "BibView*bibWin*newMenu*item11*label:    Phdthesis",
  66. "BibView*bibWin*newMenu*item8*label:    Manual",
  67. "BibView*bibWin*newMenu*item14*label:    Unpublished",
  68. "BibView*bibWin*newMenu*item10*label:    Misc",
  69. "BibView*bibWin*commandBox*search.label:    Search",
  70. "BibView*bibWin*commandBox*list.label:    List",
  71. "BibView*bibWin*commandBox*macro.label:    Macros",
  72. "BibView*bibWin*commandBox*print.label:    Print",
  73. "BibView*bibWin*commandBox*save.label:    Save",
  74. "BibView*bibWin*commandBox*close.label:    Close",
  75. "BibView*bibWin*window.label:        Window",
  76. "BibView*bibWin*window.menuName:        windowMenu",
  77. "BibView*bibWin*window*leftMargin:     20",
  78. "BibView*bibWin*windowMenu.label:    Window-Menu",
  79. "BibView*bibWin*windowMenu*item1.label:    Cascade",
  80. "BibView*bibWin.bibdesk.label:",
  81. "BibView*bibWin.bibdesk.width:       450",
  82. "BibView*bibWin.bibdesk.height:        350",
  83. "BibView*bibWin.bibdesk.min:            350    ",
  84. "BibView*bibWin.bibdesk.fromVert:      commandBox",
  85. "BibView*listWin*allowShellResize:    true",
  86. "BibView*listWin*allowResize:        true",
  87. "BibView*listWin*foreground:            Maroon",
  88. "BibView*listWin.height:            650",
  89. "BibView*listWin.width:            530",
  90. "BibView*listWin.horizDistance:        235",
  91. "BibView*listWin.vertDistance:        20",
  92. "BibView*listWin.borderWidth:        2",
  93. "BibView*listWin.orientation:        vertical",
  94. "BibView*listWin*showGrip:        false",
  95. "BibView*listWin.commandBox.vSpace:     0",
  96. "BibView*listWin.commandBox.hSpace:     0",
  97. "BibView*listWin.commandBox.min:     21",
  98. "BibView*listWin.commandBox*print.label:    Print",
  99. "BibView*listWin.commandBox*save.label:    Save",
  100. "BibView*listWin.commandBox*quit.label:    Close",
  101. "BibView*listWin*listVport.fromVert:    commandBox",
  102. "BibView*listWin*listVport*font:     *fixed-bold-r-*-100-*",
  103. "BibView*listWin*head1.label:        Author",
  104. "BibView*listWin*head1.width:        200",
  105. "BibView*listWin*head2.label:        Title",
  106. "BibView*listWin*head2.width:        390",
  107. "BibView*listWin*head3.label:        Type",
  108. "BibView*listWin*head3.width:        85",
  109. "BibView*listWin*head4.label:        Year",
  110. "BibView*listWin*head4.width:        30",
  111. "BibView*listWin*list.verticalList:    true",
  112. "BibView*listWin*list.forceColumns:    true",
  113. "BibView*listWin*list.defaultColumns:    1",
  114. "BibView*macWin*allowResize:        true",
  115. "BibView*macWin.height:            300",
  116. "BibView*macWin.width:            450",
  117. "BibView*macWin.borderWidth:        2",
  118. "BibView*macWin.orientation:        vertical",
  119. "BibView*macWin*showGrip:        false",
  120. "BibView*macWin.commandBox.vSpace:     0",
  121. "BibView*macWin.commandBox.hSpace:     0",
  122. "BibView*macWin.commandBox.min:     21",
  123. "BibView*macWin.commandBox*save.label:    Save",
  124. "BibView*macWin.commandBox*close.label:    Close",
  125. "BibView*macText.fromVert:        commandBox",
  126. "BibView*macText*font:             *fixed-bold-r-*-100-*",
  127. "BibView*macText*textSource.editType:    edit",
  128. "BibView*macText*input:             true",
  129. "BibView*helpWin*allowResize:        true",
  130. "BibView*helpWin.height:            300",
  131. "BibView*helpWin.width:            500",
  132. "BibView*helpWin.borderWidth:        2",
  133. "BibView*helpWin.orientation:        vertical",
  134. "BibView*helpWin*showGrip:        false",
  135. "BibView*helpWin.commandBox.vSpace:     0",
  136. "BibView*helpWin.commandBox.hSpace:     0",
  137. "BibView*helpWin.commandBox.min:     21",
  138. "BibView*helpWin.commandBox*close.label:    Close",
  139. "BibView*helpText.fromVert:        commandBox",
  140. "BibView*helpText*font:             *fixed-bold-r-*-100-*",
  141. "BibView*helpText*input:             true",
  142. "BibView*annoteWin*allowResize:        true",
  143. "BibView*annoteWin.height:        300",
  144. "BibView*annoteWin.width:        500",
  145. "BibView*annoteWin.borderWidth:        2",
  146. "BibView*annoteWin.orientation:        vertical",
  147. "BibView*annoteWin*showGrip:        false",
  148. "BibView*annoteWin.commandBox.vSpace:     0",
  149. "BibView*annoteWin.commandBox.hSpace:     0",
  150. "BibView*annoteWin.commandBox.min:     21",
  151. "BibView*annoteWin.commandBox*close.label:    Close",
  152. "BibView*annoteWin.commandBox*save.label:    Save",
  153. "BibView*annoteText.fromVert:        commandBox",
  154. "BibView*annoteText*font:             *fixed-bold-r-*-100-*",
  155. "BibView*annoteText*input:             true",
  156. "BibView*srchShell.title:        Search",
  157. "BibView*srchWin.height:            400",
  158. "BibView*srchWin.width:            380",
  159. "BibView*srchWin.borderWidth:        2",
  160. "BibView*srchWin.orientation:        vertical",
  161. "BibView*srchWin*showGrip:        false",
  162. "BibView*srchWin.commandBox.vSpace:     0",
  163. "BibView*srchWin.commandBox.hSpace:     0",
  164. "BibView*srchWin.commandBox.min:     21",
  165. "BibView*srchWin.commandBox*ok.label:    Start search",
  166. "BibView*srchWin.commandBox*cancel.label:Cancel",
  167. "BibView*srchWin*srchFlds*borderwidth:    0",
  168. "BibView*srchWin*srchFlds*vSpace:    0",
  169. "BibView*srchWin*srchFlds*font:         *helvetica-bold-r-*-100-*",
  170. "BibView*srchWin*ComboBox.borderWidth:    0",
  171. "BibView*srchWin*ComboBox.margin:    4",
  172. "BibView*srchWin*ComboBox*Text.width:    250",
  173. "BibView*srchWin*ComboBox*Toggle.width:    100",
  174. "BibView*srchWin*ComboBox*Toggle.justify:left",
  175. "BibView*srchWin*ComboBox*Viewport.borderWidth:    4",
  176. "BibView*srchWin*ComboBox*Viewport.width:    300",
  177. "BibView*srchWin*ComboBox*Viewport.height:    100",
  178. "BibView*srchWin*cbTitle*name:        Title:",
  179. "BibView*srchWin*cbAuthor*name:        Author:",
  180. "BibView*srchWin*cbCategory*name:    Category:",
  181. "BibView*srchWin*cbMonth*name:        Month:",
  182. "BibView*srchWin*cbYear*name:        Year:",
  183. "BibView*srchWin*cbNote*name:        Note:",
  184. "BibView*srchWin*cbAnnote*name:        Annote:",
  185. "BibView*srchWin*cbJournal*name:        Journal:",
  186. "BibView*srchWin*cbEditor*name:        Editor:",
  187. "BibView*srchWin*cbOrganization*name:    Organization:",
  188. "BibView*srchWin*cbInstitution*name:    Institution:",
  189. "BibView*srchWin*cbPublisher*name:    Publisher:",
  190. "BibView*srchWin*cbSchool*name:        School:",
  191. "BibView*srchWin*cbAddress*name:        Address:",
  192. "BibView*srchWin*cbEdition*name:        Edition:",
  193. "BibView*srchWin*cbChapter*name:        Chapter:",
  194. "BibView*srchWin*cbSeries*name:        Series:",
  195. "BibView*srchWin*cbPages*name:        Pages:",
  196. "BibView*srchWin*cbVolume*name:        Volume:",
  197. "BibView*srchWin*cbNumber*name:        Number:",
  198. "BibView*srchWin*cbBooktitle*name:    Booktitle:",
  199. "BibView*srchWin*cbHowpublished*name:    Howpublished:",
  200. "BibView*srchWin*cbType*name:        Type:",
  201. "BibView*srchWin*cbKey*name:        Key:",
  202. "BibView*srchWin*cbMainkey*name:        bibTeX-Key:",
  203. "BibView*srchWin*cbCrossref*name:    Crossref:",
  204. "BibView*cardShell.allowShellResize:    true",
  205. "BibView*cardWin*Text*scrollHorizontal:    whenNeeded",
  206. "BibView*cardWin*Text*scrollVertical:    whenNeeded",
  207. "BibView*cardWin*Text*thickness:        8",
  208. "BibView*cardWin*Text.height:        28",
  209. "BibView*cardWin*Text*textSource.editType:    edit",
  210. "BibView*cardWin*Text*input:         true",
  211. "BibView*cardWin*Label*justify:        left",
  212. "BibView*cardWin.foreground:            Violet",
  213. "BibView*cardWin.width:            450",
  214. "BibView*cardWin.borderWidth:        2",
  215. "BibView*cardWin.commandBox.showGrip:    false",
  216. "BibView*cardWin.commandBox.width:     400",
  217. "BibView*cardWin.commandBox.vSpace:     0",
  218. "BibView*cardWin.commandBox.hSpace:     0",
  219. "BibView*cardWin.commandBox.min:     21",
  220. "BibView*cardWin.commandBox.skipAdjust:     true",
  221. "BibView*cardWin.commandBox*userDef.label:    UserData",
  222. "BibView*cardWin.commandBox*annote.label:    Annote",
  223. "BibView*cardWin.commandBox*save.label:        Save",
  224. "BibView*cardWin.commandBox*change.label:    Change",
  225. "BibView*cardWin.commandBox*delete.label:    Delete",
  226. "BibView*cardWin.commandBox*copy.label:        Copy",
  227. "BibView*cardWin.commandBox*quit.label:        Close",
  228. "BibView*cardWin.userFldVport*font:     *helvetica-bold-r-*-100-*",
  229. "BibView*cardWin.userFldVport.allowResize: true",
  230. "BibView*cardWin.userFldVport.min:    100",
  231. "BibView*cardWin.userFldVport.max:    150",
  232. "BibView*cardWin*userFieldL.width:    150",
  233. "BibView*cardWin*userField.width:    225",
  234. "BibView*cardWin*userFldHead.label:    Userdefined Fields",
  235. "BibView*cardWin*userFldHead.width:    380",
  236. "BibView*cardWin*userFldHead.borderWidth:    2",
  237. "BibView*cardWin*userFldHead.justify:    center",
  238. "BibView*cardWin.carddesk*font:         *helvetica-bold-r-*-100-*",
  239. "BibView*cardWin.carddesk*Label*borderWidth:    0",
  240. "BibView*cardWin.carddesk.defaultDistance:    0",
  241. "BibView*cardWin.carddesk*mainkeyLabel.label:    BibTeX-Key:",
  242. "BibView*cardWin.carddesk*mainkey.width:            110",
  243. "BibView*cardWin.carddesk*crossrefLabel.label:    Crossref:",
  244. "BibView*cardWin.carddesk*crossref.width:         148",
  245. "BibView*cardWin.carddesk*addressLabel.label:    Address:",
  246. "BibView*cardWin.carddesk*address.width:            300",
  247. "BibView*cardWin.carddesk*address.height:        40",
  248. "BibView*cardWin.carddesk*annoteLabel.label:    Annote:",
  249. "BibView*cardWin.carddesk*annote.width:        325",
  250. "BibView*cardWin.carddesk*annote.height:        60",
  251. "BibView*cardWin.carddesk*authorLabel.label:    Author:",
  252. "BibView*cardWin.carddesk*author.width:        355",
  253. "BibView*cardWin.carddesk*author.height:        30",
  254. "BibView*cardWin.carddesk*booktitleLabel.label:    Booktitle:",
  255. "BibView*cardWin.carddesk*booktitle.width:    340",
  256. "BibView*cardWin.carddesk*categoryLabel.label:    Category:",
  257. "BibView*cardWin.carddesk*category.width:    133",
  258. "BibView*cardWin.carddesk*chapterLabel.label:    Chapter:",
  259. "BibView*cardWin.carddesk*chapter.width:        350",
  260. "BibView*cardWin.carddesk*editionLabel.label:    Edition:",
  261. "BibView*cardWin.carddesk*editorLabel.label:    Editor:",
  262. "BibView*cardWin.carddesk*editor.width:        320",
  263. "BibView*cardWin.carddesk*editor.height:        30",
  264. "BibView*cardWin.carddesk*howpublishedLabel.label:    Howpublished:",
  265. "BibView*cardWin.carddesk*howpublished.width:    275",
  266. "BibView*cardWin.carddesk*institutionLabel.label:    Institution:",
  267. "BibView*cardWin.carddesk*institutionLabel.width:    60",
  268. "BibView*cardWin.carddesk*institution.width:    334",
  269. "BibView*cardWin.carddesk*journalLabel.label:    Journal:",
  270. "BibView*cardWin.carddesk*journal.width:        345",
  271. "BibView*cardWin.carddesk*keyLabel.label:    Key:",
  272. "BibView*cardWin.carddesk*monthLabel.label:    Month:",
  273. "BibView*cardWin.carddesk*month.width:        210",
  274. "BibView*cardWin.carddesk*noteLabel.label:    Note:",
  275. "BibView*cardWin.carddesk*note.width:        345",
  276. "BibView*cardWin.carddesk*note.height:        60",
  277. "BibView*cardWin.carddesk*numberLabel.label:    Number:",
  278. "BibView*cardWin.carddesk*number.width:        145",
  279. "BibView*cardWin.carddesk*organizationLabel.label:    Organization:",
  280. "BibView*cardWin.carddesk*organization.width:    317",
  281. "BibView*cardWin.carddesk*pagesLabel.label:    Pages:",
  282. "BibView*cardWin.carddesk*pages.width:        80",
  283. "BibView*cardWin.carddesk*publisherLabel.label:    Publisher:",
  284. "BibView*cardWin.carddesk*publisher.width:    350",
  285. "BibView*cardWin.carddesk*publisher.height:    30",
  286. "BibView*cardWin.carddesk*schoolLabel.label:    School:",
  287. "BibView*cardWin.carddesk*school.width:      315",
  288. "BibView*cardWin.carddesk*seriesLabel.label:    Series:",
  289. "BibView*cardWin.carddesk*series.width:      335",
  290. "BibView*cardWin.carddesk*titleLabel.label:    Title:",
  291. "BibView*cardWin.carddesk*title.width:        360",
  292. "BibView*cardWin.carddesk*title.height:        40",
  293. "BibView*cardWin.carddesk*typeLabel.label:    Type:",
  294. "BibView*cardWin.carddesk*type.width:        365",
  295. "BibView*cardWin.carddesk*volumeLabel.label:    Volume:",
  296. "BibView*cardWin.carddesk*volume.width:        115",
  297. "BibView*cardWin.carddesk*yearLabel.label:    Year:",
  298. "BibView*cardWin*article.borderWidth:        0",
  299. "BibView*cardWin*book.borderWidth:        0",
  300. "BibView*cardWin*booklet.borderWidth:        0",
  301. "BibView*cardWin*conference.borderWidth:        0",
  302. "BibView*cardWin*inbook.borderWidth:        0",
  303. "BibView*cardWin*incollection.borderWidth:    0",
  304. "BibView*cardWin*inproceedings.borderWidth:    0",
  305. "BibView*cardWin*manual.borderWidth:        0",
  306. "BibView*cardWin*mastersthesis.borderWidth:    0",
  307. "BibView*cardWin*misc.borderWidth:        0",
  308. "BibView*cardWin*phdthesis.borderWidth:        0",
  309. "BibView*cardWin*proceedings.borderWidth:    0",
  310. "BibView*cardWin*techreport.borderWidth:        0",
  311. "BibView*cardWin*unpublished.borderWidth:    0",
  312. "BibView*confirmLoadShell.title:        Load?",
  313. "BibView*confirmLoadBox.label:        File is loaded.\\nTake saved version?",
  314. "BibView*confirmLoadBox*ok.label:    OK",
  315. "BibView*confirmLoadBox*cancel.label:    Cancel",
  316. "BibView*confirmBibQuitShell.title:    Close Bibliography?",
  317. "BibView*confirmBibQuitBox.label:    There are unsaved changes!\\nDo you really want to quit?",
  318. "BibView*confirmBibQuitBox*ok.label:    Quit",
  319. "BibView*confirmBibQuitBox*cancel.label:    Save",
  320. "BibView*confirmQuitCardShell.title:    Close Card?",
  321. "BibView*confirmQuitCardBox.label:    REALLY close without saving?",
  322. "BibView*confirmQuitCardBox*ok.label:    Close",
  323. "BibView*confirmQuitCardBox*cancel.label:    First Save",
  324. "BibView*confirmMacQuitShell.title:    Close Macros?",
  325. "BibView*confirmMacQuitBox.label:    Macros were changed!\\nSave macros or quit?",
  326. "BibView*confirmMacQuitBox*save.label:    Save",
  327. "BibView*confirmMacQuitBox*quit.label:    Quit",
  328. "BibView*fileSelectBoxShell.title:    BibView Filemanager",
  329. "BibView*fileSelectBoxShell.iconName:    BibView Filemanager",
  330. "BibView*fileLoadHead.label:        Choose bibTeX-file:",
  331. "BibView*fileRenameHead.label:        Rename bibTeX-file:",
  332. "BibView*filePrintHead.label:        LaTeX file:",
  333. "BibView*configLoadHead.label:        Configuration file:",
  334. "BibView*fileListSaveHead.label:        Save list as bibTeX-file:",
  335. "BibView*bibselShell.title:        BibView-file-Selection",
  336. "BibView*bibselWin*closeHead.label:    Close",
  337. "BibView*bibselWin*saveHead.label:    Save",
  338. "BibView*bibselWin*saveAsHead.label:    Save as",
  339. "BibView*bibselWin*copyHead.label:    Copy to",
  340. "BibView*bibselWin*collSrcHead.label:    Take entries from",
  341. "BibView*bibselWin*collDestHead.label:    Insert into",
  342. "BibView*bibselWin*checkHead.label:    Check",
  343. "BibView*bibselWin*printHead.label:    Print",
  344. "BibView*bibselWin*macroHead.label:    Edit Macros",
  345. "BibView*bibselWin*cancel.label:        Cancel",
  346. "BibView*errorShell.title:    BibView Message",
  347. "BibView*errorWin*type.label:    ERROR:",
  348. "BibView*errorWin*type.foreground: red",
  349. "BibView*errorWin*ok.label:    OK",
  350. "BibView*errorIcon*foreground:    red",
  351. "BibView*warnShell.title:    BibView Message",
  352. "BibView*warnWin*type.label:    WARNING:",
  353. "BibView*warnWin*type.foreground:    red",
  354. "BibView*warnWin*ok.label:    OK",
  355. "BibView*warnIcon*foreground:    red",
  356. "BibView*noticeShell.title:    BibView Message",
  357. "BibView*noticeWin*type.label:    HINT:",
  358. "BibView*noticeWin*type.foreground: blue",
  359. "BibView*noticeWin*ok.label:    OK",
  360. "BibView*noticeIcon*foreground:    blue",
  361. "BibView*msgText10.label:  Not yet implemented.",
  362. "BibView*msgText11.label:  No storage!",
  363. "BibView*msgText12.label:  No BibTeX file!",
  364. "BibView*msgText14.label:  No BibTeX file opened.",
  365. "BibView*msgText15.label:  File cannot be unified!.",
  366. "BibView*msgText16.label:  Card cannot be copied.",
  367. "BibView*msgText30.label:  Windows can't be cascaded!",
  368. "BibView*msgText50.label:  File can't be opened!",
  369. "BibView*msgText51.label:  No Configuration file.",
  370. "BibView*msgText52.label:  Temporary file can't be opened!",
  371. "BibView*msgText53.label:  Macros can't be saved!",
  372. "BibView*msgText54.label:  Please close Error-Window!",
  373. "BibView*msgText60.label:  There are inconsistencies.\\nThe cards are shown in List.",
  374. "BibView*msgText61.label:  No inconsistencies.",
  375. "BibView*msgText62.label:  There are syntactic problems.\\n Please correct error and load again.",
  376. "BibView*msgText63.label:  Some required fields are not entered.\\nThe entry was saved.",
  377. "BibView*msgText100.label: Double Keys are not allowed.\\nCard in Tree.",
  378. "BibView*msgText101.label: No regular expression.",
  379. "BibView*msgText102.label: No entries found in file.",
  380. "BibView*msgText104.label: Card incomplete: no Author.",
  381. "BibView*msgText105.label: Card incomplete: no Title.",
  382. "BibView*msgText106.label: Card incomplete: no Journal.",
  383. "BibView*msgText107.label: Card incomplete: no Year.",
  384. "BibView*msgText108.label: Card incomplete: no Publisher.",
  385. "BibView*msgText109.label: Card incomplete: no Booktitle.",
  386. "BibView*msgText110.label: Card incomplete: no Chapter.",
  387. "BibView*msgText111.label: Card incomplete: no School.",
  388. "BibView*msgText112.label: Card incomplete: no Institution.",
  389. "BibView*msgText113.label: Card incomplete: no Notice.",
  390. "BibView*msgText114.label: Card incomplete: no Author or Editor.",
  391. "BibView*msgText115.label: Card incomplete: no Chapter and/or Page.",
  392. "BibView*msgText120.label: No further Files loadable.\\nPlease close bibliography.",
  393. "BibView*msgText121.label: Internal Bug: Nr. 121",
  394. "BibView*quit*accelerators:\
  395. X    <Key>q: notify()",
  396. "BibView*mainwin*services*accelerators:\
  397. X    <Key>i: notify()",
  398. "BibView*mainwin*options*accelerators:\
  399. X    <Key>o: notify()",
  400. "BibView*mainwin*window*accelerators:\
  401. X    <Key>f: notify()",
  402. "BibView*mainwin*help*accelerators:\
  403. X    <Key>h: notify()",
  404. SHAR_EOF
  405. echo 'File fb_res.h is complete' &&
  406. chmod 0644 fb_res.h ||
  407. echo 'restore of fb_res.h failed'
  408. Wc_c="`wc -c < 'fb_res.h'`"
  409. test 19496 -eq "$Wc_c" ||
  410.     echo 'fb_res.h: original size 19496, current size' "$Wc_c"
  411. rm -f _shar_wnt_.tmp
  412. fi
  413. # ============= flexsrc/b.l ==============
  414. if test ! -d 'flexsrc'; then
  415.     echo 'x - creating directory flexsrc'
  416.     mkdir 'flexsrc'
  417. fi
  418. if test -f 'flexsrc/b.l' -a X"$1" != X"-c"; then
  419.     echo 'x - skipping flexsrc/b.l (File already exists)'
  420.     rm -f _shar_wnt_.tmp
  421. else
  422. > _shar_wnt_.tmp
  423. echo 'x - extracting flexsrc/b.l (Text)'
  424. sed 's/^X//' << 'SHAR_EOF' > 'flexsrc/b.l' &&
  425. %{
  426. #include "b.tab.h"
  427. #include <X11/Intrinsic.h>
  428. #include "bibview.h"
  429. X
  430. extern char yylval;
  431. extern int ueIdx;
  432. extern char uebergabe[];
  433. extern int yynline;
  434. extern int yynflexcalls;
  435. X
  436. X
  437. %}
  438. X
  439. X
  440. %%
  441. X
  442. X
  443. "@string"  {
  444. X            yynflexcalls += 1;
  445. X        return STRING; 
  446. X           }
  447. X
  448. "@preamble"  {
  449. X              yynflexcalls += 1;
  450. X              return PREAMBLE; 
  451. X             }
  452. X
  453. X
  454. "@article"        {
  455. X                   yynflexcalls += 1;
  456. X                   return ARTICLE;
  457. X                  }
  458. X
  459. "@book"          {
  460. X                   yynflexcalls += 1;
  461. X                   return BOOK;
  462. X                  }
  463. X
  464. "@booklet"        {
  465. X                   yynflexcalls += 1;
  466. X                   return BOOKLET;
  467. X                  }
  468. X
  469. "@conference"     {
  470. X                   yynflexcalls += 1;
  471. X                   return CONFERENCE;
  472. X                  }
  473. X
  474. "@inbook"         {
  475. X                   yynflexcalls += 1;
  476. X                   return INBOOK;
  477. X                  }
  478. X
  479. "@incollection"   {
  480. X                   yynflexcalls += 1;
  481. X                   return INCOLLECTION;
  482. X                  }
  483. X
  484. "@inproceedings"  {
  485. X                   yynflexcalls += 1;
  486. X                   return INPROCEEDINGS;
  487. X                  }
  488. X
  489. "@manual"         {
  490. X                   yynflexcalls += 1;
  491. X                   return MANUAL;
  492. X                  }
  493. X
  494. "@mastersthesis"  {
  495. X                   yynflexcalls += 1;
  496. X                   return MASTERSTHESIS;
  497. X                  }
  498. X
  499. "@misc"           {
  500. X                   yynflexcalls += 1;
  501. X                   return MISC;
  502. X                  }
  503. X
  504. "@phdthesis"      {
  505. X                   yynflexcalls += 1;
  506. X                   return PHDTHESIS;
  507. X                  }
  508. X
  509. "@proceedings"    {
  510. X                   yynflexcalls += 1;
  511. X                   return PROCEEDINGS;
  512. X                  }
  513. X
  514. "@techreport"     {
  515. X                   yynflexcalls += 1;
  516. X                   return TECHREPORT;
  517. X                  }
  518. X
  519. "@unpublished"    {
  520. X                   yynflexcalls += 1;
  521. X                   return UNPUBLISHED;
  522. X                  }
  523. X
  524. "#"        {
  525. X             yynflexcalls += 1;
  526. X             yylval = yytext[0];
  527. X             uebergabe[ueIdx] = yytext[0];
  528. X             uebergabe[ueIdx+1] = '\0';
  529. X             ueIdx++;
  530. X             return ZAUN;
  531. X           }
  532. X
  533. X
  534. ","        {
  535. X             yynflexcalls += 1;
  536. X             yylval = yytext[0];
  537. X             uebergabe[ueIdx] = yytext[0];
  538. X             uebergabe[ueIdx+1] = '\0';
  539. X             ueIdx++;
  540. X             return KOMMA;
  541. X           }
  542. X
  543. "("        {
  544. X             yynflexcalls += 1;
  545. X             yylval = yytext[0];
  546. X             uebergabe[ueIdx] = yytext[0];
  547. X             uebergabe[ueIdx+1] = '\0';
  548. X             ueIdx++;
  549. X             return LRKL;
  550. X           }
  551. X
  552. ")"        {
  553. X             yynflexcalls += 1;
  554. X             yylval = yytext[0];
  555. X             uebergabe[ueIdx] = yytext[0];
  556. X             uebergabe[ueIdx+1] = '\0';
  557. X             ueIdx++;
  558. X             return RRKL;
  559. X           }
  560. X
  561. "{"        {
  562. X             yynflexcalls += 1;
  563. X             yylval = yytext[0];
  564. X             uebergabe[ueIdx] = yytext[0];
  565. X             uebergabe[ueIdx+1] = '\0';
  566. X             ueIdx++;
  567. X             return LGKL;
  568. X           }
  569. X
  570. "}"        {
  571. X             yynflexcalls += 1;
  572. X             yylval = yytext[0];
  573. X             uebergabe[ueIdx] = yytext[0];
  574. X             uebergabe[ueIdx+1] = '\0';
  575. X             ueIdx++;
  576. X             return RGKL;
  577. X           }
  578. X
  579. "="        {
  580. X             yynflexcalls += 1;
  581. X             yylval = yytext[0];
  582. X             uebergabe[ueIdx] = yytext[0];
  583. X             uebergabe[ueIdx+1] = '\0';
  584. X             ueIdx++;
  585. X             return EQ;
  586. X           }
  587. X
  588. [\"]        {
  589. X             yynflexcalls += 1;
  590. X             yylval = yytext[0];
  591. X             uebergabe[ueIdx] = yytext[0];
  592. X             uebergabe[ueIdx+1] = '\0';
  593. X             ueIdx++;
  594. X             return DAZ;
  595. X           }
  596. X
  597. [ \t\n]    {
  598. X             yynflexcalls += 1;
  599. X             yylval = yytext[0];
  600. X             uebergabe[ueIdx] = yytext[0];
  601. X             uebergabe[ueIdx+1] = '\0';
  602. X             ueIdx++;
  603. X             if (yytext[0] == '\n') yynline += 1;
  604. X             return WHITE_SPACE;
  605. X           }
  606. X
  607. [a-zA-Z0-9]  {
  608. X               yynflexcalls += 1;
  609. X               yylval = yytext[0];
  610. X               uebergabe[ueIdx] = yytext[0];
  611. X               uebergabe[ueIdx+1] = '\0';
  612. X               ueIdx++;
  613. X               return BUCHSTABE_ZAHL;
  614. X             }
  615. X
  616. <<EOF>>  {
  617. X           yynflexcalls += 1;
  618. X           YY_NEW_FILE;
  619. X  /*         uebergabe[0] = '\0'; */
  620. X           ueIdx = 0;
  621. X           return 0;
  622. X         }
  623. X
  624. .          {
  625. X             yynflexcalls += 1;
  626. X             yylval = yytext[0];
  627. X             uebergabe[ueIdx] = yytext[0];
  628. X             uebergabe[ueIdx+1] = '\0';
  629. X             ueIdx++;
  630. X             return ZEICHEN;
  631. X           }
  632. X
  633. X
  634. %%
  635. X
  636. SHAR_EOF
  637. chmod 0640 flexsrc/b.l ||
  638. echo 'restore of flexsrc/b.l failed'
  639. Wc_c="`wc -c < 'flexsrc/b.l'`"
  640. test 4688 -eq "$Wc_c" ||
  641.     echo 'flexsrc/b.l: original size 4688, current size' "$Wc_c"
  642. rm -f _shar_wnt_.tmp
  643. fi
  644. # ============= flexsrc/b.y ==============
  645. if test -f 'flexsrc/b.y' -a X"$1" != X"-c"; then
  646.     echo 'x - skipping flexsrc/b.y (File already exists)'
  647.     rm -f _shar_wnt_.tmp
  648. else
  649. > _shar_wnt_.tmp
  650. echo 'x - extracting flexsrc/b.y (Text)'
  651. sed 's/^X//' << 'SHAR_EOF' > 'flexsrc/b.y' &&
  652. %{
  653. #include <stdio.h>
  654. #include <ctype.h>
  655. #include <X11/Intrinsic.h>
  656. #include <unistd.h>
  657. #include "bibview.h"
  658. X
  659. X
  660. #define YYSTYPE char
  661. X
  662. #define __RUNTIME_YYMAXDEPTH
  663. #define YYMAXDEPTH 1000
  664. X
  665. #define MAX_UEBERGABE  20000
  666. X
  667. char uebergabe[MAX_UEBERGABE];
  668. int ueIdx = 0;
  669. X
  670. FILE *tempDatei;
  671. extern FILE *yyin;
  672. extern YY_NEW_FILE;
  673. extern int yy_init;
  674. X
  675. typedef struct _Snode {
  676. X                       char inh;
  677. X                       int slen;
  678. X                       struct _Snode *next;
  679. } Snode;
  680. X
  681. /*******************************************/
  682. /* Globale Variablen                       */
  683. /*******************************************/
  684. X
  685. static Snode *key = NULL;            
  686. static Snode *fldname = NULL;       
  687. static Snode *fldcont = NULL;      
  688. X
  689. static CardData *card = NULL;
  690. static UserFld *helpufield = NULL;
  691. static String helpFldName = NULL;
  692. static Errcode err;
  693. static int glbtreeIdx;
  694. static int beginIdx;
  695. int yynline;
  696. int yynflexcalls;
  697. int yynerrs;
  698. /*******************************************/
  699. /* Lokale Funktionen                       */
  700. /*******************************************/
  701. X
  702. static void PushSign(Snode **w, char a);
  703. static void AppendSign(Snode **w, char a);
  704. static void FreeStack(Snode **s);
  705. static void StackToString(Snode *s, char **text); 
  706. static void GetKey();
  707. static void GetFldNameCont();
  708. X
  709. static Errcode Scalloc(String *s1, String s2);
  710. static char * Sncalloc(char *s2, int von, int bis);
  711. static int SetInputFile(char *file);
  712. static int SkipSpace(char *text, Snode **new);
  713. static int SkipNewLineSpace(char *text);
  714. static void StrToLower(char *text);
  715. static int StringIsPeteEmpty(char *text);
  716. static void WriteRecToFile(CardData *card, FILE *datei);
  717. static long WriteLineToFile(FILE *datei, char *feld, char *inh);
  718. static int ItIsBibFile(char *dateiName);
  719. %}
  720. %token  STRING
  721. %token  PREAMBLE
  722. %token  ARTICLE
  723. %token  BOOK
  724. %token  BOOKLET
  725. %token  CONFERENCE
  726. %token  INBOOK
  727. %token  INCOLLECTION
  728. %token  INPROCEEDINGS
  729. %token  MANUAL
  730. %token  MASTERSTHESIS
  731. %token  MISC
  732. %token  PHDTHESIS
  733. %token  PROCEEDINGS
  734. %token  TECHREPORT
  735. %token  UNPUBLISHED
  736. %token  KOMMA
  737. %token  EQ
  738. %token  LGKL
  739. %token  RGKL
  740. %token  LRKL
  741. %token  RRKL
  742. %token  DAZ
  743. %token  ZAUN
  744. %token  ZEICHEN
  745. %token  WHITE_SPACE
  746. %token  BUCHSTABE_ZAHL
  747. X
  748. X
  749. %%
  750. X
  751. datei  
  752. X         :  leerraum entry KOMMA datei
  753. X         |  entry KOMMA datei
  754. X         |  leerraum entry leerraum KOMMA datei
  755. X         |  entry leerraum KOMMA datei
  756. X         |  leerraum entry datei
  757. X         |  entry datei
  758. X         |  leerraum entry KOMMA
  759. X         |  entry KOMMA
  760. X         |  leerraum entry leerraum KOMMA 
  761. X         |  entry leerraum KOMMA 
  762. X         |  leerraum entry 
  763. X         |  entry
  764. X         |  leerraum
  765. X
  766. entry
  767. X     :  string
  768. X     |  preamble
  769. X     |  eintrag
  770. X     
  771. string
  772. X         :  STRING LGKL allstringG RGKL
  773. X              {         
  774. X                beginIdx = SkipNewLineSpace(uebergabe);
  775. X                fprintf(tempDatei,"@STRING"); 
  776. X                fprintf(tempDatei,"%s\n",&uebergabe[beginIdx]); 
  777. X                ueIdx = 0;
  778. X              } 
  779. X         |  STRING leerraum LGKL allstringG RGKL
  780. X              {         
  781. X                beginIdx = SkipNewLineSpace(uebergabe);
  782. X                fprintf(tempDatei,"@STRING"); 
  783. X                fprintf(tempDatei,"%s\n",&uebergabe[beginIdx]); 
  784. X                ueIdx = 0;
  785. X              } 
  786. X         |  STRING LRKL allstringR RRKL 
  787. X              {         
  788. X                beginIdx = SkipNewLineSpace(uebergabe);
  789. X                fprintf(tempDatei,"@STRING"); 
  790. X                fprintf(tempDatei,"%s\n",&uebergabe[beginIdx]); 
  791. X                ueIdx = 0;
  792. X              } 
  793. X         |  STRING leerraum LRKL allstringR RRKL
  794. X              {         
  795. X                beginIdx = SkipNewLineSpace(uebergabe);
  796. X                fprintf(tempDatei,"@STRING"); 
  797. X                fprintf(tempDatei,"%s\n",&uebergabe[beginIdx]); 
  798. X                ueIdx = 0;
  799. X              } 
  800. X
  801. preamble
  802. X         :  PREAMBLE LGKL allstringG RGKL
  803. X              {         
  804. X                beginIdx = SkipNewLineSpace(uebergabe);
  805. X                fprintf(tempDatei,"@PREAMBLE"); 
  806. X                fprintf(tempDatei,"%s\n",&uebergabe[beginIdx]); 
  807. X                ueIdx = 0;
  808. X              } 
  809. X         |  PREAMBLE leerraum LGKL allstringG RGKL 
  810. X              {         
  811. X                beginIdx = SkipNewLineSpace(uebergabe);
  812. X                fprintf(tempDatei,"@PREAMBLE"); 
  813. X                fprintf(tempDatei,"%s\n",&uebergabe[beginIdx]); 
  814. X                ueIdx = 0;
  815. X              } 
  816. X         |  PREAMBLE LRKL allstringR RRKL
  817. X              {         
  818. X                beginIdx = SkipNewLineSpace(uebergabe);
  819. X                fprintf(tempDatei,"@PREAMBLE"); 
  820. X                fprintf(tempDatei,"%s\n",&uebergabe[beginIdx]); 
  821. X                ueIdx = 0;
  822. X              } 
  823. X         |  PREAMBLE leerraum LRKL allstringR RRKL
  824. X              {         
  825. X                beginIdx = SkipNewLineSpace(uebergabe);
  826. X                fprintf(tempDatei,"@PREAMBLE"); 
  827. X                fprintf(tempDatei,"%s\n",&uebergabe[beginIdx]); 
  828. X                ueIdx = 0;
  829. X              } 
  830. X
  831. allstringG
  832. X         :  WHITE_SPACE allstringG
  833. X         |  ZEICHEN  allstringG
  834. X         |  BUCHSTABE_ZAHL allstringG
  835. X         |  KOMMA allstringG
  836. X         |  EQ allstringG
  837. X         |  ZAUN allstringG
  838. X         |  DAZ allstringG
  839. X         |  LGKL allstringG RGKL allstringG
  840. X         |  LGKL RGKL allstringG
  841. X         |  LGKL allstringG RGKL
  842. X         |  LGKL RGKL
  843. X         |  LRKL allstringG
  844. X         |  RRKL allstringG
  845. X         |  WHITE_SPACE
  846. X         |  ZEICHEN
  847. X         |  BUCHSTABE_ZAHL
  848. X         |  KOMMA
  849. X         |  EQ
  850. X         |  ZAUN
  851. X         |  DAZ
  852. X         |  LRKL
  853. X         |  RRKL 
  854. X
  855. allstringR
  856. X         :  WHITE_SPACE allstringR
  857. X         |  ZEICHEN  allstringR
  858. X         |  BUCHSTABE_ZAHL allstringR
  859. X         |  KOMMA allstringR
  860. X         |  EQ allstringR
  861. X         |  ZAUN allstringR
  862. X         |  DAZ allstringR
  863. X         |  LGKL allstringR RGKL allstringR
  864. X         |  LGKL RGKL allstringR
  865. X         |  LGKL allstringR RGKL
  866. X         |  LGKL RGKL
  867. X         |  LRKL allstringR RRKL
  868. X         |  LRKL RRKL
  869. X         |  WHITE_SPACE
  870. X         |  ZEICHEN
  871. X         |  BUCHSTABE_ZAHL
  872. X         |  KOMMA
  873. X         |  EQ
  874. X         |  ZAUN
  875. X         |  DAZ
  876. eintrag 
  877. X         :  eingabetyp LGKL schluessel KOMMA felder leerraum RGKL 
  878. X                {                 
  879. X                  GetKey();
  880. X                }
  881. X         |  eingabetyp leerraum LGKL schluessel KOMMA felder leerraum RGKL 
  882. X                {
  883. X                  GetKey();
  884. X                }
  885. X         |  eingabetyp LGKL schluessel KOMMA felder RGKL 
  886. X                {
  887. X                  GetKey();
  888. X                }
  889. X         |  eingabetyp leerraum LGKL schluessel KOMMA felder RGKL
  890. X                {
  891. X                  GetKey();
  892. X                }
  893. X         |  eingabetyp LRKL schluessel KOMMA felder leerraum RRKL 
  894. X                {
  895. X                  GetKey();
  896. X                }
  897. X         |  eingabetyp leerraum LRKL schluessel KOMMA felder leerraum RRKL
  898. X                {
  899. X                  GetKey();
  900. X                }
  901. X         |  eingabetyp LRKL schluessel KOMMA felder RRKL 
  902. X                {
  903. X                  GetKey();
  904. X                }
  905. X         |  eingabetyp leerraum LRKL schluessel KOMMA felder RRKL
  906. X                {
  907. X                  GetKey();
  908. X                }
  909. X
  910. eingabetyp
  911. X      :  ARTICLE
  912. X                {
  913. X          err = dbtMakeCard(&card);
  914. X          card->cardtype = article; 
  915. X          Scalloc(&card->cardtypestr, "article");
  916. X                }
  917. X      |  BOOK
  918. X                {
  919. X          err = dbtMakeCard(&card);
  920. X          card->cardtype = book; 
  921. X          Scalloc(&card->cardtypestr, "book");
  922. X                }
  923. X      |  BOOKLET
  924. X                {
  925. X          err = dbtMakeCard(&card);
  926. X          card->cardtype = booklet; 
  927. X          Scalloc(&card->cardtypestr, "booklet");
  928. X                }
  929. X      |  CONFERENCE
  930. X                {
  931. X          err = dbtMakeCard(&card);
  932. X          card->cardtype = conference; 
  933. X          Scalloc(&card->cardtypestr, "conference");
  934. X                }
  935. X      |  INBOOK
  936. X                {
  937. X          err = dbtMakeCard(&card);
  938. X          card->cardtype = inbook; 
  939. X          Scalloc(&card->cardtypestr, "inbook");
  940. X                }
  941. X      |  INCOLLECTION
  942. X                {
  943. X          err = dbtMakeCard(&card);
  944. X          card->cardtype = incollection; 
  945. X          Scalloc(&card->cardtypestr, "incollection");
  946. X                }
  947. X      |  INPROCEEDINGS
  948. X                {
  949. X          err = dbtMakeCard(&card);
  950. X          card->cardtype = inproceedings; 
  951. X          Scalloc(&card->cardtypestr, "inproceedings");
  952. X                }
  953. X      |  MANUAL
  954. X                {
  955. X          err = dbtMakeCard(&card);
  956. X          card->cardtype = manual; 
  957. X          Scalloc(&card->cardtypestr, "manual");
  958. X                }
  959. X      |  MASTERSTHESIS
  960. X                {
  961. X          err = dbtMakeCard(&card);
  962. X          card->cardtype = mastersthesis; 
  963. X          Scalloc(&card->cardtypestr, "mastersthesis");
  964. X                }
  965. X      |  MISC
  966. X                {
  967. X          err = dbtMakeCard(&card);
  968. X          card->cardtype = misc; 
  969. X          Scalloc(&card->cardtypestr, "misc");
  970. X                }
  971. X      |  PHDTHESIS
  972. X                {
  973. X          err = dbtMakeCard(&card);
  974. X          card->cardtype = phdthesis; 
  975. X          Scalloc(&card->cardtypestr, "phdthesis");
  976. X                }
  977. X      |  PROCEEDINGS
  978. X                {
  979. X          err = dbtMakeCard(&card);
  980. X          card->cardtype = proceedings; 
  981. X          Scalloc(&card->cardtypestr, "proceedings");
  982. X                }
  983. X      |  TECHREPORT
  984. X                {
  985. X          err = dbtMakeCard(&card);
  986. X          card->cardtype = techreport; 
  987. X          Scalloc(&card->cardtypestr, "techreport");
  988. X                }
  989. X      |  UNPUBLISHED
  990. X                {
  991. X          err = dbtMakeCard(&card);
  992. X          card->cardtype = unpublished; 
  993. X          Scalloc(&card->cardtypestr, "unpublished");
  994. X                }
  995. X
  996. schluessel 
  997. X            :  leerraum schl
  998. X            |  schl leerraum
  999. X            |  leerraum schl leerraum
  1000. X            |  schl
  1001. X
  1002. X
  1003. schl
  1004. X            :  BUCHSTABE_ZAHL schl
  1005. X                {
  1006. X                  PushSign(&key, $1);
  1007. X                }
  1008. X            |  ZEICHEN schl
  1009. X                {
  1010. X                  PushSign(&key, $1);
  1011. X                }
  1012. X            |  BUCHSTABE_ZAHL 
  1013. X                {
  1014. X                  PushSign(&key, $1);
  1015. X                }
  1016. X            |  ZEICHEN 
  1017. X                {
  1018. X                  PushSign(&key, $1);
  1019. X                }
  1020. X            |  EQ
  1021. X                {
  1022. X                  PushSign(&key, $1);
  1023. X                }
  1024. X
  1025. felder 
  1026. X          :  leerraum feld KOMMA felder
  1027. X          |  feld KOMMA felder
  1028. X          |  leerraum feld KOMMA
  1029. X          |  leerraum feld KOMMA leerraum
  1030. X          |  feld KOMMA 
  1031. X          |  feld KOMMA  leerraum
  1032. X          |  leerraum feld
  1033. X          |  feld
  1034. X          |  feld leerraum
  1035. X
  1036. feld 
  1037. X          :  feldname leerraum EQ konkatenation
  1038. X                {
  1039. X                  GetFldNameCont();
  1040. X                }
  1041. X          |  feldname EQ konkatenation 
  1042. X                {
  1043. X                  GetFldNameCont();
  1044. X                }
  1045. X
  1046. feldname
  1047. X          :  BUCHSTABE_ZAHL feldname
  1048. X                {
  1049. X                  PushSign(&fldname, $1);
  1050. X                  ueIdx = 0;
  1051. X                }
  1052. X          |  BUCHSTABE_ZAHL
  1053. X                {
  1054. X                  PushSign(&fldname, $1);
  1055. X                  ueIdx = 0;
  1056. X                }
  1057. X
  1058. leerraum
  1059. X          :  WHITE_SPACE  leerraum
  1060. X          |  WHITE_SPACE
  1061. X
  1062. X      
  1063. konkatenation
  1064. X             :  konkatenation ZAUN konkatenation
  1065. X             |  feldinhalt
  1066. X             |  feldinhalt leerraum
  1067. X             |  leerraum feldinhalt 
  1068. X             |  leerraum feldinhalt leerraum
  1069. X
  1070. feldinhalt
  1071. X          :  LGKL allstringG RGKL
  1072. X          |  DAZ dazfeldinhalt DAZ 
  1073. X          |  DAZ DAZ 
  1074. X          |  LGKL RGKL
  1075. X          |  makro
  1076. X
  1077. makro
  1078. X            :  BUCHSTABE_ZAHL makro
  1079. X            |  ZEICHEN makro
  1080. X            |  BUCHSTABE_ZAHL 
  1081. X            |  ZEICHEN 
  1082. X
  1083. dazfeldinhalt
  1084. X          :  WHITE_SPACE dazfeldinhalt
  1085. X          |  BUCHSTABE_ZAHL dazfeldinhalt
  1086. X          |  ZEICHEN dazfeldinhalt
  1087. X          |  LRKL dazfeldinhalt
  1088. X          |  RRKL dazfeldinhalt
  1089. X          |  LGKL dazdaz RGKL
  1090. X          |  LGKL dazdaz RGKL dazfeldinhalt
  1091. X          |  LGKL RGKL
  1092. X          |  LGKL RGKL dazfeldinhalt
  1093. X          |  WHITE_SPACE
  1094. X          |  BUCHSTABE_ZAHL
  1095. X          |  KOMMA dazfeldinhalt
  1096. X          |  EQ dazfeldinhalt
  1097. X          |  ZEICHEN
  1098. X          |  LRKL
  1099. X          |  RRKL
  1100. X          |  KOMMA
  1101. X
  1102. dazdaz
  1103. X          :  WHITE_SPACE dazdaz
  1104. X          |  BUCHSTABE_ZAHL dazdaz
  1105. X          |  ZEICHEN dazdaz
  1106. X          |  LRKL dazdaz
  1107. X          |  RRKL dazdaz
  1108. X          |  LGKL dazdaz RGKL
  1109. X          |  LGKL dazdaz RGKL dazdaz
  1110. X          |  WHITE_SPACE
  1111. X          |  BUCHSTABE_ZAHL
  1112. X          |  KOMMA dazdaz
  1113. X          |  DAZ dazdaz
  1114. X          |  EQ dazdaz
  1115. X          |  ZEICHEN
  1116. X          |  LRKL
  1117. X          |  RRKL
  1118. X          |  KOMMA
  1119. X          |  DAZ
  1120. X
  1121. %%
  1122. X
  1123. static void StrToLower(char *text)
  1124. {
  1125. X while (*text != '\0') {
  1126. X   *text++ = tolower(*text);
  1127. X }
  1128. }
  1129. X
  1130. X
  1131. X
  1132. static int SkipNewLineSpace(char *text)
  1133. X int erg, back;
  1134. X
  1135. X erg = 0;
  1136. X while (erg < MAX_UEBERGABE) {
  1137. X   if (*text == '{' ||  *text == '(') {
  1138. X     back = strlen(text);
  1139. X     text = text + back;
  1140. X     while (*text != '}' && *text != ')') { 
  1141. X       *text = '\0';
  1142. X       text--;
  1143. X     }
  1144. X     return erg;
  1145. X   }
  1146. X   text++;
  1147. X   erg++;
  1148. X }
  1149. X return 0;
  1150. }
  1151. X
  1152. X
  1153. X
  1154. X
  1155. static int SkipSpace(char *text, Snode **new)
  1156. {
  1157. X int erg, lgkl, daz, index, inmakro;
  1158. X index = 0;
  1159. X lgkl = 0;
  1160. X daz = 0;
  1161. X inmakro = 0;
  1162. X
  1163. X while ((*text == ' ' || *text == '=' || *text == '\t') && index < ueIdx) { text++; index++; }
  1164. X erg = index;
  1165. X if (*text == '{') {
  1166. X   lgkl += 1;
  1167. X   index++;
  1168. X   text++; 
  1169. X   inmakro = 0;
  1170. X }
  1171. X else if (*text == '"') {
  1172. X   daz += 1;
  1173. X   index++;
  1174. X   text++; 
  1175. X   inmakro = 0;
  1176. X }
  1177. X else {
  1178. X   AppendSign(new, '@');
  1179. X   AppendSign(new, *text);
  1180. X   index++;
  1181. X   text++; 
  1182. X   inmakro = 1;
  1183. X }
  1184. X while (index < ueIdx) {
  1185. X   if (*text == '{') {
  1186. X     if (lgkl >= 1 || daz >= 1) {  /* Klammer in String */
  1187. X       AppendSign(new, *text);
  1188. X     }
  1189. X     text++;                       /* Klammer nach Zaun */
  1190. X     index++;
  1191. X     lgkl += 1;
  1192. X     inmakro = 0;
  1193. X   }
  1194. X   else if (*text == '}') {
  1195. X     if ((lgkl > 1) || (daz >= 1)) {
  1196. X       AppendSign(new, *text);
  1197. X     } 
  1198. X     text++;
  1199. X     index++;
  1200. X     lgkl -= 1;
  1201. X     inmakro = 0;
  1202. X   }
  1203. X   else if (*text == '"') {
  1204. X     if (lgkl >= 1) {
  1205. X       AppendSign(new, *text);
  1206. X       text++;
  1207. X       index++;
  1208. X     } 
  1209. X     else {
  1210. X       text++;
  1211. X       index++;
  1212. X       if (daz == 0) daz++;
  1213. X       else daz = 0;
  1214. X     }
  1215. X     inmakro = 0;
  1216. X   }
  1217. X   else if (*text == '#') {        /* Space vor/nach Konkatenation */
  1218. X     if (lgkl < 1 && daz < 1) {
  1219. X       if (text[index-1] != ' ') AppendSign(new, ' ');
  1220. X       AppendSign(new, '@');       /* # -> @# */
  1221. X       AppendSign(new, *text);
  1222. X       if (text[index+1] != ' ') AppendSign(new, ' ');
  1223. X     }
  1224. X     else {                        /* Konkatenation in String */
  1225. X       AppendSign(new, *text);
  1226. X     }
  1227. X     text++;
  1228. X     index++;
  1229. X     inmakro = 0;
  1230. X   } 
  1231. X   else if (*text == ',') {        /* Komma am Ende */
  1232. X     if (lgkl < 1 && daz != 1) break;
  1233. X     else {
  1234. X       AppendSign(new, *text);
  1235. X       text++;
  1236. X       index++;
  1237. X     }
  1238. X     inmakro = 0;
  1239. X   }
  1240. X   else if (*text == ')') {        /* runde Klammer am Ende */
  1241. X     if (lgkl < 1 && daz != 1) break;
  1242. X     else {
  1243. X       AppendSign(new, *text);
  1244. X       text++;
  1245. X       index++;
  1246. X     }
  1247. X     inmakro = 0;
  1248. X   }
  1249. X   else if (isalnum(*text)) {
  1250. X     if (lgkl < 1 && daz < 1 && (inmakro==0)) {
  1251. X       if (text[index-1] != ' ') AppendSign(new, ' ');
  1252. X       AppendSign(new, '@');       /* makro -> @makro */
  1253. X       AppendSign(new, *text);
  1254. X       inmakro = 1;
  1255. X     }
  1256. X     else {                        /* Zeichen in String */
  1257. X       AppendSign(new, *text);
  1258. X     }
  1259. X     text++;
  1260. X     index++;
  1261. X   } 
  1262. X   else {                        /* sonstiges Zeichen in String */
  1263. X     AppendSign(new, *text);
  1264. X     text++;
  1265. X     index++;
  1266. X     inmakro = 0;
  1267. X   } 
  1268. X }
  1269. X return erg;
  1270. X  
  1271. }
  1272. X
  1273. X
  1274. static void PushSign(Snode **w, char a)
  1275. {
  1276. X Snode *hnode, *oldw;
  1277. X
  1278. X if (*w == NULL) {
  1279. X   hnode = (Snode *)calloc(1,sizeof(Snode));
  1280. X   hnode->inh = a;
  1281. X   hnode->slen = 1;
  1282. X   hnode->next = NULL;
  1283. X   *w = hnode;
  1284. X }
  1285. X else {
  1286. X   oldw = *w; 
  1287. X   hnode = (Snode *)calloc(1,sizeof(Snode));
  1288. X   hnode->inh = a;
  1289. X   hnode->slen = oldw->slen + 1;
  1290. X   hnode->next = oldw;
  1291. X   *w = hnode;
  1292. }
  1293. }
  1294. X
  1295. X
  1296. static void AppendSign(Snode **w, char a)
  1297. {
  1298. X Snode *hnode, *oldw;
  1299. X int newslen;
  1300. X
  1301. X if (*w == NULL) {
  1302. X   hnode = (Snode *)calloc(1,sizeof(Snode));
  1303. X   hnode->inh = a;
  1304. X   hnode->slen = 1;
  1305. X   hnode->next = NULL;
  1306. X   *w = hnode;
  1307. X }
  1308. X else {
  1309. X   oldw = *w; 
  1310. X   newslen = 1;
  1311. X   while (oldw->next != NULL) {
  1312. X     newslen++; 
  1313. X     oldw = oldw->next;
  1314. X   }
  1315. X   newslen++; 
  1316. X   hnode = (Snode *)calloc(1,sizeof(Snode));
  1317. X   hnode->inh = a;
  1318. X   hnode->slen = 1;
  1319. X   hnode->next = NULL;
  1320. X   oldw->next = hnode;
  1321. X   oldw = *w; 
  1322. X   oldw->slen = newslen;      /* echte Laenge nur im 1. El. */
  1323. }
  1324. }
  1325. X
  1326. X
  1327. static void FreeStack(Snode **s)
  1328. {
  1329. X Snode *h, *del;
  1330. X
  1331. X del = *s;
  1332. X while (del != NULL) {
  1333. X   h = del->next;
  1334. X   free(del);
  1335. X   del = h;
  1336. X }
  1337. X *s = NULL;
  1338. X
  1339. X
  1340. static void StackToString(Snode *s, char **text) 
  1341. {
  1342. X  char *help;
  1343. X
  1344. X  help = (char *)calloc(1,s->slen+1);
  1345. X  *text = help;
  1346. X  while (s != NULL) {
  1347. X    *help = s->inh; 
  1348. X    s = s->next;
  1349. X    help++;
  1350. X  }
  1351. X  *help = '\0';
  1352. X  help--;
  1353. X  while (*help == '\n') {    /* NL am Ende vom Wort loeschen */
  1354. X    *help = '\0';
  1355. X    help--;
  1356. X  }
  1357. }
  1358. X
  1359. X
  1360. X
  1361. static void GetKey()
  1362. {
  1363. X  StackToString(key, &card->mainkey);
  1364. X  FreeStack(&key);
  1365. X  err = dbtInsert(glbtreeIdx, card);
  1366. X  err = dbtDeleteCard(&card);
  1367. }
  1368. X
  1369. X
  1370. static void GetFldNameCont()
  1371. {
  1372. X  int anf, i;
  1373. X  
  1374. X  if (helpFldName != NULL) {
  1375. X    free(helpFldName);
  1376. X    helpFldName = NULL;
  1377. X  }
  1378. X  StackToString(fldname, &helpFldName);
  1379. X  StrToLower(helpFldName); 
  1380. X  anf = SkipSpace(uebergabe, &fldcont);
  1381. X
  1382. X  if (strcmp(helpFldName, "address") == 0) {
  1383. X    StackToString(fldcont, &card->address);
  1384. X  } 
  1385. X  else if (strcmp(helpFldName, "annote") == 0) {
  1386. X    StackToString(fldcont, &card->annote);
  1387. X  } 
  1388. X  else if (strcmp(helpFldName, "author") == 0) {
  1389. X    StackToString(fldcont, &card->author);
  1390. X  } 
  1391. X  else if (strcmp(helpFldName, "booktitle") == 0) {
  1392. X    StackToString(fldcont, &card->booktitle);
  1393. X  } 
  1394. X  else if (strcmp(helpFldName, "chapter") == 0) {
  1395. X    StackToString(fldcont, &card->chapter);
  1396. X  } 
  1397. X  else if (strcmp(helpFldName, "crossref") == 0) {
  1398. X    StackToString(fldcont, &card->crossref);
  1399. X  }
  1400. X  else if (strcmp(helpFldName, "edition") == 0) {
  1401. X    StackToString(fldcont, &card->edition);
  1402. X  } 
  1403. X  else if (strcmp(helpFldName, "editor") == 0) {
  1404. X    StackToString(fldcont, &card->editor);
  1405. X  } 
  1406. X  else if (strcmp(helpFldName, "howpublished") == 0) {
  1407. X    StackToString(fldcont, &card->howpublished);
  1408. X  } 
  1409. X  else if (strcmp(helpFldName, "institution") == 0) {
  1410. X    StackToString(fldcont, &card->institution);
  1411. X  } 
  1412. X  else if (strcmp(helpFldName, "journal") == 0) {
  1413. X    StackToString(fldcont, &card->journal);
  1414. X  } 
  1415. X  else if (strcmp(helpFldName, "key") == 0) {
  1416. X    StackToString(fldcont, &card->key);
  1417. X  } 
  1418. X  else if (strcmp(helpFldName, "month") == 0) {
  1419. X    StackToString(fldcont, &card->month);
  1420. X  } 
  1421. X  else if (strcmp(helpFldName, "note") == 0) {
  1422. X    StackToString(fldcont, &card->note);
  1423. X  } 
  1424. X  else if (strcmp(helpFldName, "number") == 0) {
  1425. X    StackToString(fldcont, &card->number);
  1426. X  } 
  1427. X  else if (strcmp(helpFldName, "organization") == 0) {
  1428. X    StackToString(fldcont, &card->organization);
  1429. X  } 
  1430. X  else if (strcmp(helpFldName, "pages") == 0) {
  1431. X    StackToString(fldcont, &card->pages);
  1432. X  } 
  1433. X  else if (strcmp(helpFldName, "publisher") == 0) {
  1434. X    StackToString(fldcont, &card->publisher);
  1435. X  } 
  1436. X  else if (strcmp(helpFldName, "school") == 0) {
  1437. X    StackToString(fldcont, &card->school);
  1438. X  } 
  1439. X  else if (strcmp(helpFldName, "series") == 0) {
  1440. X    StackToString(fldcont, &card->series);
  1441. X  } 
  1442. X  else if (strcmp(helpFldName, "title") == 0) {
  1443. X    StackToString(fldcont, &card->title);
  1444. X  } 
  1445. X  else if (strcmp(helpFldName, "type") == 0) {
  1446. X    StackToString(fldcont, &card->type);
  1447. X  } 
  1448. X  else if (strcmp(helpFldName, "volume") == 0) {
  1449. X    StackToString(fldcont, &card->volume);
  1450. X  } 
  1451. X  else if (strcmp(helpFldName, "year") == 0) {
  1452. X    StackToString(fldcont, &card->year);
  1453. X  } 
  1454. X  else if (strcmp(helpFldName, "category") == 0) {
  1455. X    StackToString(fldcont, &card->category);
  1456. X  } 
  1457. X  else {
  1458. X    err = dbtMakeUserFld(&helpufield);
  1459. X    Scalloc(&helpufield->fldName, helpFldName);
  1460. X    StackToString(fldcont, &helpufield->fldData); 
  1461. X    err = dbtAppendUserFld(&card->ufield, helpufield);
  1462. X  }
  1463. X  FreeStack(&fldname);
  1464. X  FreeStack(&fldcont);
  1465. }
  1466. X
  1467. X
  1468. X
  1469. /*********************************************************************/
  1470. /*  Errcode Scalloc(String *s1, String s2):                          */
  1471. /*  Platz fuer s1 bereitstellen und s2 nach s1 kopieren              */
  1472. /*********************************************************************/
  1473. X
  1474. static Errcode Scalloc(String *s1, String s2)
  1475. {
  1476. X if (s2 != NULL){
  1477. X   *s1 = (String)calloc(1,strlen(s2)+1);
  1478. X   if (*s1 == NULL) return BIF_ECALLOC;
  1479. X   strcpy(*s1, s2);
  1480. X }
  1481. X return BIF_OK;
  1482. }
  1483. X
  1484. X
  1485. X
  1486. static char * Sncalloc(char *s2, int von, int bis)
  1487. {
  1488. X char *help, *weiter;
  1489. X int i;
  1490. X
  1491. X if (s2 != NULL){
  1492. X   help = (char *)calloc(1,bis);
  1493. X   if (help == NULL) return NULL;
  1494. X   strncpy(help, &s2[von], bis - von + 1 );
  1495. X   weiter = help;
  1496. X   for (i = 0; i < bis - von + 1; i++) weiter++;
  1497. X   *weiter = '\0'; 
  1498. }
  1499. X return help;
  1500. }
  1501. X
  1502. X
  1503. X
  1504. static int SetInputFile(char *file)
  1505. {
  1506. X char *infilename; 
  1507. X    
  1508. X if (file)
  1509. X {
  1510. X  infilename = file;
  1511. X  yyin = fopen(infilename, "r" );
  1512. X
  1513. X  if ( yyin == NULL ) {
  1514. X    return BIF_EOPEN;  
  1515. X  }
  1516. X  return BIF_OK;  
  1517. X }
  1518. X else
  1519. X {
  1520. X   yyin = stdin;
  1521. X   infilename = "<stdin>";
  1522. X   return BIF_OK;  
  1523. X }
  1524. }
  1525. X
  1526. X
  1527. /*********************************************
  1528. X * Test, ob Datei im BibTeX-Format           *
  1529. X *********************************************/
  1530. static int ItIsBibFile(char *dateiName)
  1531. {
  1532. X FILE *dptr;
  1533. X char inh;
  1534. X
  1535. X dptr = fopen(dateiName, "r");
  1536. X inh = (char)getc(dptr);
  1537. X if (inh == '@') {
  1538. X   fclose(dptr); 
  1539. X   return 1;
  1540. X }
  1541. X while (inh == ' ' || inh == '\t' || inh == '\n') 
  1542. X   inh = (char)getc(dptr);
  1543. X if (inh == '@') {
  1544. X   fclose(dptr); 
  1545. X   return 1;
  1546. X }
  1547. X else {
  1548. X   fclose(dptr); 
  1549. X   return 0;
  1550. X }
  1551. }
  1552. X
  1553. X
  1554. X
  1555. /*********************************************
  1556. X * BibTeX-Datei lesen                        *
  1557. X *********************************************/
  1558. Errcode bifFileRead(BibPtr bp)
  1559. {
  1560. X  int erg;
  1561. X  int len, i;
  1562. X  char *tempName;
  1563. X
  1564. X  yynline = 1; 
  1565. X  yynflexcalls = 0;
  1566. X  bp->tempfile = (char *)tempnam(NULL, NULL);
  1567. X  bp->macrofile = (char *)tempnam(NULL, NULL);
  1568. X  tempDatei = fopen(bp->macrofile, "w" );
  1569. X  if ((erg = SetInputFile(bp->filepath)) != 1) return erg;
  1570. X  if ((erg = ItIsBibFile(bp->filepath)) != 1) return ERR_NOBIB;
  1571. X  glbtreeIdx = bp->treeIdx; 
  1572. X  erg = yyparse();
  1573. X  fclose(tempDatei);
  1574. X  uebergabe[0] = '\0';
  1575. X  ueIdx = 0;
  1576. X  if (erg == 0) {
  1577. X    if (yyin) fclose(yyin);
  1578. X    return BIF_OK;
  1579. X  }
  1580. X  else {
  1581. X    erg = -yynline;
  1582. X    yy_init = 1;
  1583. X    if (yyin) fclose(yyin);
  1584. X    return (Errcode)erg;
  1585. X  }
  1586. }
  1587. X
  1588. X
  1589. X
  1590. Errcode bifFileWrite(BibPtr bp)
  1591. {
  1592. X CardListNode *list, *hlist;
  1593. X CardData *hcard;
  1594. X Errcode erg;
  1595. X char sysStr[2*MAX_FILEPATHLEN];
  1596. X String saveName;
  1597. X int savelen;
  1598. X
  1599. CardListNode *cl = NULL;
  1600. char wcKey[] = ".";
  1601. CardData *wcCard;
  1602. Errcode status;
  1603. X
  1604. X if (bp->macrofile!=NULL){
  1605. X    sprintf(sysStr, "cp  %s %s", bp->macrofile, bp->tempfile);
  1606. X    system(sysStr);
  1607. X    tempDatei = fopen(bp->tempfile, "r+");
  1608. X    }
  1609. X else
  1610. X    {tempDatei = fopen(bp->tempfile, "w+");
  1611. X     }
  1612. X
  1613. X if (tempDatei == NULL) return BIF_EWRITE;
  1614. X
  1615. X   /* build list with wildcard search */
  1616. X   if ((status = (int)dbtMakeCard(&wcCard)) != OK) {
  1617. X      guwError(status);
  1618. X   }
  1619. X   wcCard->cardtype = (int)regexpr;
  1620. X   wcCard->mainkey = glbNewString(".");
  1621. X   if ((status = dbtSearchList(bp->treeIdx, wcCard, &cl)) != OK) {
  1622. X      guwError(status); 
  1623. X      return;
  1624. X   }
  1625. X
  1626. X while (cl != NULL) {
  1627. X   WriteRecToFile(cl->data, tempDatei);
  1628. X   cl = cl->next;
  1629. X } 
  1630. X
  1631. X fclose(tempDatei);
  1632. X sprintf(sysStr, "cp  %s %s", bp->tempfile, bp->filepath);
  1633. X system(sysStr);
  1634. X return BIF_OK;
  1635. }
  1636. X
  1637. X
  1638. Errcode bifFileListWrite(BibPtr bp, CardListNode *list, String fname)
  1639. {
  1640. X CardListNode *hlist;
  1641. X CardData *hcard;
  1642. X Errcode erg;
  1643. X char sysStr[2*MAX_FILEPATHLEN];
  1644. X String saveName;
  1645. X int savelen;
  1646. X if (bp->macrofile!=NULL)
  1647. X    {sprintf(sysStr, "cp %s %s", bp->macrofile, fname);
  1648. X     system(sysStr);
  1649. X     }
  1650. X
  1651. X tempDatei = fopen(fname, "a+");
  1652. X if (tempDatei == NULL) return BIF_EWRITE;
  1653. X hlist = list;
  1654. X while (hlist != NULL) {
  1655. X   WriteRecToFile(hlist->data, tempDatei);
  1656. X   hlist = hlist->next;
  1657. X } 
  1658. X fclose(tempDatei);
  1659. X return BIF_OK;
  1660. }
  1661. X
  1662. X
  1663. static long WriteLineToFile(FILE *datei, char *feld, char *inh)
  1664. {
  1665. X  int makro = 2;    /* weder Makro, noch String */
  1666. X  long pos; 
  1667. X  char *tmp;
  1668. X
  1669. X  fprintf(datei,"     %s = ",feld);    
  1670. X  while (*inh == ' ' || *inh == '\t' || *inh == '\n') {
  1671. X    fprintf(datei,"%c",*inh);    
  1672. X    inh++;
  1673. X  }
  1674. X  if (*inh == '@') {
  1675. X    fprintf(datei," ");    
  1676. X    makro = 1;
  1677. X  }
  1678. X  else {
  1679. X    fprintf(datei,"{");    
  1680. X    fprintf(datei,"%c",*inh);    
  1681. X    makro = 0;
  1682. X  }
  1683. X  inh++;
  1684. X  while (*inh != '\0') {
  1685. X    if (*inh == '@') {
  1686. X      tmp = inh;
  1687. X      tmp++;
  1688. X      if (*tmp == '#') {                  /* KONKATENATION */
  1689. X        if (makro == 1) {
  1690. X          fprintf(datei," # ");           /* letzter Teil war ein MAKRO */ 
  1691. X          tmp++;
  1692. X          while (*tmp == ' ' || *tmp == '\t' || *tmp == '\n') {
  1693. X            fprintf(datei,"%c",*tmp);    
  1694. X            tmp++;
  1695. X          }
  1696. X          if (*tmp == '@') {              /* naechster Teil ist ein MAKRO */
  1697. X            fprintf(datei," ");    
  1698. X            makro = 1;
  1699. X          }
  1700. X          else {
  1701. X            fprintf(datei,"{");    
  1702. X            fprintf(datei,"%c",*tmp);     /* naechster Teil ist ein STRING */
  1703. X            makro = 0;
  1704. X          }
  1705. X        }
  1706. X        else if (makro == 0) {
  1707. X          fprintf(datei,"} # ");          /* letzter Teil war ein STRING */ 
  1708. X          tmp++;
  1709. X          while (*tmp == ' ' || *tmp == '\t' || *tmp == '\n') {
  1710. X            fprintf(datei,"%c",*tmp);    
  1711. X            tmp++;
  1712. X          }
  1713. X          if (*tmp == '@') {              /* naechster Teil ist ein MAKRO */
  1714. X            fprintf(datei," ");    
  1715. X            makro = 1;
  1716. X          }
  1717. X          else {
  1718. X            fprintf(datei,"{");    
  1719. X            fprintf(datei,"%c",*tmp);     /* naechster Teil ist ein STRING */
  1720. X            makro = 0;
  1721. X          }
  1722. X        }  /* else if makro == 0 */
  1723. X        inh = tmp;
  1724. X      }
  1725. X      else {                              /* AFFE nicht schreiben */
  1726. X        fprintf(datei," ");    
  1727. X        makro = 1;
  1728. X      }
  1729. X    }      /* if @ */
  1730. X    else {
  1731. X      fprintf(datei,"%c",*inh);    
  1732. X    }
  1733. X    inh++;
  1734. X  }  /* while */
  1735. X  if (makro == 0) {
  1736. X    fprintf(datei,"}");    
  1737. X  }
  1738. X        
  1739. X   pos = ftell(datei);
  1740. X   fprintf(datei,",  \n");
  1741. X   return pos;
  1742. }
  1743. X
  1744. X
  1745. static void WriteRecToFile(CardData *card, FILE *datei)
  1746. SHAR_EOF
  1747. true || echo 'restore of flexsrc/b.y failed'
  1748. fi
  1749. echo 'End of  part 13'
  1750. echo 'File flexsrc/b.y is continued in part 14'
  1751. echo 14 > _shar_seq_.tmp
  1752. exit 0
  1753. -- 
  1754. Senior Systems Scientist        mail: dcmartin@msi.com
  1755. Molecular Simulations, Inc.        uucp: uunet!dcmartin
  1756. 796 North Pastoria Avenue        at&t: 408/522-9236
  1757. Sunnyvale, California 94086        fax: 408/732-0831
  1758.