summaryrefslogtreecommitdiff
path: root/support/dktools/italic.ctr
diff options
context:
space:
mode:
Diffstat (limited to 'support/dktools/italic.ctr')
-rw-r--r--support/dktools/italic.ctr1260
1 files changed, 1260 insertions, 0 deletions
diff --git a/support/dktools/italic.ctr b/support/dktools/italic.ctr
new file mode 100644
index 0000000000..97041e63bf
--- /dev/null
+++ b/support/dktools/italic.ctr
@@ -0,0 +1,1260 @@
+%% options
+
+copyright owner = Dirk Krause
+copyright year = 2012-xxxx
+license = bsd
+
+
+%% module
+
+#include "dk3all.h"
+#include "itadmin.h"
+
+
+
+$!trace-include
+
+
+
+/** Keywords used by the module.
+*/
+static char const * const itadmin_license_c8_kw[] = {
+$!string-table
+#
+# 0: Newline
+#
+\n
+#
+# 1: Space
+#
+
+#
+# 2: File name for license report
+#
+licenses.tex
+#
+# 3: File open mode: write
+#
+w
+#
+# 4: Opening a chapter
+#
+\\chapter{
+#
+# 5: Ending a LaTeX command
+#
+}
+#
+# 6: Clearpage command
+#
+\\clearpage
+#
+# 7: End long table
+#
+\\\\\n\\end{longtable}
+#
+# 8: Section
+#
+\\section{
+#
+# 9: Subsection
+#
+\\subsection{
+#
+# 10: Subsubsection
+#
+\\subsubsection{
+#
+# 11:
+#
+pdftitle={
+#
+# 12:
+#
+pdfsubject={
+#
+# 13:
+#
+pdfauthor={
+#
+# 14:
+#
+pdfcreator={itadmin - http://dktools.sourceforge.net/}
+#
+# 15:
+#
+\\author{
+#
+# 16:
+#
+\\title{
+#
+# 17: Comma
+#
+,
+#
+# 18: Begin long table
+#
+\\begin{longtable}{lll}
+#
+# 19
+#
+\\endfirsthead
+#
+# 20
+#
+\\endhead
+#
+# 21
+#
+\\endfoot
+#
+# 22
+#
+\\endlastfoot
+#
+# 23
+#
+\\\\[0.5em]
+#
+# 24
+#
+&
+#
+# 25
+#
+\\multicolumn{2}{l}{
+#
+# 26
+#
+\\\\*
+#
+# 27
+#
+\\textit{
+#
+# 28
+#
+\\chapter[
+#
+# 29
+#
+]{
+#
+# 30
+#
+\\section[
+#
+# 31
+#
+\\emph{
+#
+# 32
+#
+\\/}
+$!end
+};
+
+
+
+/** Start of LaTeX source.
+*/
+static char const * const itadmin_license_file_start1a[] = {
+$!text
+\documentclass[titlepage,origlongtable]{scrbook}
+\KOMAoptions{paper=a4}
+\KOMAoptions{fontsize=12pt}
+$!end
+};
+
+
+
+/** Start of LaTeX source.
+*/
+static char const * const itadmin_license_file_start1b[] = {
+$!text
+\documentclass[12pt]{book}
+$!end
+};
+
+
+/** LaTeX packages after ngerman.
+*/
+static char const * const itadmin_license_file_start4[] = {
+$!text
+\usepackage{ifpdf}
+\usepackage[utf8]{inputenc}
+\usepackage{mathptmx}
+\usepackage[scaled=.92]{helvet}
+\usepackage{courier}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+\usepackage{latexsym}
+\usepackage{varioref}
+\usepackage{color}
+\usepackage{makeidx}
+\usepackage{longtable}
+\makeindex
+\ifpdf
+\usepackage[activate=normal]{pdfcprot}
+\pdfcompresslevel=9
+\usepackage[
+pdftex,
+colorlinks=true,
+pdfpagemode=UseNone,
+pdfstartview={XYZ 0 835 1.25},
+bookmarksnumbered,
+$!end
+};
+
+
+
+/** LaTeX package after hyperref options for title, subject, author.
+*/
+static char const * const itadmin_license_file_start2[] = {
+$!text
+]{hyperref}
+\else
+\usepackage[dvips,colorlinks=true,linkcolor=black]{hyperref}
+\fi
+\parindent0cm
+$!end
+};
+
+
+
+/** Renewcommand used only for koma-script.
+*/
+static char const * const itadmin_license_file_start3a[] = {
+$!text
+\renewcommand*{\sectfont}{\bfseries}
+$!end
+};
+
+
+
+/** Final commands after title and author.
+*/
+static char const * const itadmin_license_file_start3[] = {
+$!text
+\setcounter{secnumdepth}{1}
+\begin{document}
+$!end
+};
+
+
+
+/** LaTeX file end.
+*/
+static char const * const itadmin_license_file_end[] = {
+$!text
+\end{document}
+$!end
+};
+
+
+
+/** Write data for one license.
+ @param job Job structure.
+ @param os Output stream.
+ @param lic License to write.
+*/
+static
+void
+itadmin_license_write_license_type(
+ itadmin_job *job,
+ dk3_stream_t *os,
+ itadmin_license *lic
+)
+{
+ char const *ltn;
+ int ie;
+ ltn = NULL;
+ if(lic->ltype) {
+ ltn = (lic->ltype)->sn;
+ if((lic->ltype)->ln) {
+ ltn = (lic->ltype)->ln;
+ }
+ }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ if(ltn) {
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ltn);
+ } else {
+ ie = dk3app_get_encoding(job->app);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[53], ie);
+ }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+}
+
+
+
+/** Check whether we must write the license owner because the host owner
+ differs from the license owner.
+ @param user License owner.
+ @param host Host on which the license is used.
+ @return 1 if host and license owner differ, 0 if they match.
+*/
+static
+int
+itadmin_license_must_write_license_owner(itadmin_user *user, itadmin_host *host)
+{
+ int back = 0;
+ if(user) {
+ if(user->us) {
+ if(host) {
+ if(host->un) {
+ if((host->un)->us) {
+ if(dk3str_c8_cmp(user->us, (host->un)->us)) {
+ back = 1;
+ }
+ }
+ } else {
+ }
+ } else {
+ }
+ }
+ }
+ return back;
+}
+
+
+
+/** Check whether we must write the host owner because the host owner
+ differs from the license owner.
+ @param user License owner.
+ @param host Host on which the license is used.
+ @return 1 if host and license owner differ, 0 if they match.
+*/
+static
+int
+itadmin_license_must_write_host_owner(itadmin_user *user, itadmin_host *host)
+{
+ int back = 0;
+ if(host) {
+ if(host->un) {
+ if(user) {
+ if((host->un)->us) {
+ if(user->us) {
+ if(dk3str_c8_cmp((host->un)->us, user->us)) {
+ back = 1;
+ }
+ } else {
+ back = 1;
+ }
+ }
+ } else {
+ back = 1;
+ }
+ }
+ }
+ return back;
+}
+
+
+
+/** Write data for one license.
+ @param job Job structure.
+ @param os Output stream.
+ @param lic License to write.
+ @param pman Software manufacturuer name.
+ @param pprod Software product name.
+ @param mn Flag: Write software manufacturer name.
+ @param pn Flag: Write software product name.
+ @param un Flag: Write user name who owns the license.
+ @param hn Flag: Write host name where license is used.
+ @param ond On difference between license owner and host owner:
+ 0=do nothing, 1=write host owner, 2=write license owner
+*/
+static
+void
+itadmin_license_write_license(
+ itadmin_job *job,
+ dk3_stream_t *os,
+ itadmin_license *lic,
+ char const *pman,
+ char const *pprod,
+ int mn,
+ int pn,
+ int un,
+ int hn,
+ int ond
+)
+{
+ char bu[128];
+ int ie;
+ ie = dk3app_get_encoding(job->app);
+ sprintf(bu, "%lu", lic->pk);
+ dk3stream_c8_fputs(os, bu);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ if((mn) && (pman)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pman);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ if((pn) && (pprod)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pprod);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ itadmin_license_write_license_type(job, os, lic);
+ } else {
+ if((pn) && (pprod)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pprod);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ itadmin_license_write_license_type(job, os, lic);
+ } else {
+ itadmin_license_write_license_type(job, os, lic);
+ }
+ }
+ if(lic->notes) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, lic->notes);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ }
+ if(un) {
+ if(lic->owner) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ itadmin_tool_write_user_latex_long(job, os, lic->owner);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ }
+ }
+ if(hn) {
+ if(lic->host) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ if((lic->host)->sn) {
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, (lic->host)->sn);
+ }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ if((lic->host)->co) {
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, (lic->host)->co);
+ }
+ switch(ond) {
+ case 1: { /* On difference write host owner. */
+ if(itadmin_license_must_write_host_owner(lic->owner, lic->host)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ if(mn) { dk3stream_c8_fputs(os, itadmin_license_c8_kw[27]); }
+ itadmin_tool_write_user_latex_long(job, os, (lic->host)->un);
+ if(mn) { dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]); }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ }
+ } break;
+ case 2: { /* On difference write license owner. */
+ if(itadmin_license_must_write_license_owner(lic->owner, lic->host)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[27]);
+ itadmin_tool_write_user_latex_long(job, os, lic->owner);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ }
+ } break;
+ }
+ }
+ } else {
+ if((lic->host) && (lic->owner)) {
+ switch(ond) {
+ case 1: {
+ if(itadmin_license_must_write_host_owner(lic->owner, lic->host)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[27]);
+ itadmin_tool_write_user_latex_long(job, os, (lic->host)->un);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ }
+ } break;
+ case 2: {
+ if(itadmin_license_must_write_license_owner(lic->owner, lic->host)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[25]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[27]);
+ itadmin_tool_write_user_latex_long(job, os, lic->owner);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ }
+ } break;
+ }
+ }
+ }
+ if(lic->order) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[54], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, lic->order);
+ }
+ if(((lic->d_del).d) && ((lic->d_del).m) && ((lic->d_del).y)) {
+ if(job->gdate) {
+ sprintf(
+ bu, "%02d.%02d.%04d", (lic->d_del).d, (lic->d_del).m, (lic->d_del).y
+ );
+ } else {
+ sprintf(
+ bu, "%04d-%02d-%02d", (lic->d_del).y, (lic->d_del).m, (lic->d_del).d
+ );
+ }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[55], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3stream_c8_fputs(os, bu);
+ }
+ if(lic->i_del) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[56], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, lic->i_del);
+ }
+ if(((lic->d_inv).d) && ((lic->d_inv).m) && ((lic->d_inv).y)) {
+ if(job->gdate) {
+ sprintf(
+ bu, "%02d.%02d.%04d", (lic->d_inv).d, (lic->d_inv).m, (lic->d_inv).y
+ );
+ } else {
+ sprintf(
+ bu, "%04d-%02d-%02d", (lic->d_inv).y, (lic->d_inv).m, (lic->d_inv).d
+ );
+ }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[57], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3stream_c8_fputs(os, bu);
+ }
+ if(lic->i_inv) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[58], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[24]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, lic->i_inv);
+ }
+}
+
+
+
+/** Get software manufacturer name.
+ @param li License
+ @return Software manufacturer name on success, NULL on error.
+*/
+static
+char const *
+itadmin_license_get_manufacturer(itadmin_license *li)
+{
+ char const *back = NULL;
+ if(li->prod) {
+ if((li->prod)->mn) {
+ back = ((li->prod)->mn)->sn;
+ if(((li->prod)->mn)->ln) {
+ back = ((li->prod)->mn)->ln;
+ }
+ }
+ }
+ return back;
+}
+
+
+
+/** Get software product name.
+ @param li License.
+ @return Product name on success, NULL on error.
+*/
+static
+char const *
+itadmin_license_get_product(itadmin_license *li)
+{
+ char const *back = NULL;
+ if(li->prod) {
+ back = (li->prod)->sn;
+ if((li->prod)->ln) {
+ back = (li->prod)->ln;
+ }
+ }
+ return back;
+}
+
+
+
+/** Check whether manufacturer and/or product have changed.
+ @param pman
+ @param prev_man
+ @param pprod
+ @param prev_prod
+ @return 0=no change, 1=product change, 2=manufacturer change.
+*/
+static
+int
+itadmin_license_change_level(
+ char const *pman,
+ char const *prev_man,
+ char const *pprod,
+ char const *prev_prod
+)
+{
+ int back = 0;
+ $? "+ itadmin_license_change_level \"%!8s\"=\"%!8s\" \"%!8s\"=\"%!8s\"", TR_8STR(pman), TR_8STR(prev_man), TR_8STR(pprod), TR_8STR(prev_prod)
+ if(pprod) {
+ if(prev_prod) {
+ if(dk3str_c8_cmp(pprod, prev_prod)) {
+ back = 1;
+ }
+ } else { back = 1; }
+ } else {
+ if(prev_prod) { back = 1; }
+ }
+ if(pman) {
+ if(prev_man) {
+ if(dk3str_c8_cmp(pman, prev_man)) {
+ back = 2;
+ }
+ } else { back = 2; }
+ } else {
+ if(prev_man) { back = 2; }
+ } $? "- itadmin_license_change_level %d", back
+ return back;
+}
+
+
+
+/** Start a longtable for the licenses.
+ @param job Job structure.
+ @param os Output stream.
+*/
+static
+void
+itadmin_license_start_longtable_for_licenses(
+ itadmin_job *job,
+ dk3_stream_t *os
+)
+{
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[18]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[19]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[20]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[21]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[22]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+}
+
+
+
+/** End a longtable for the licenses.
+ @param job Job structure.
+ @param os Output stream.
+*/
+static
+void
+itadmin_license_end_longtable_for_licenses(
+ itadmin_job *job,
+ dk3_stream_t *os
+)
+{
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[7]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+}
+
+
+
+/** Write available licenses.
+ @param job Job structure.
+ @param os Output stream.
+*/
+static
+void
+itadmin_license_write_available(itadmin_job *job, dk3_stream_t *os)
+{
+ itadmin_license *li; /* Current license to print. */
+ char const *prev_man; /* Previous software manufacturer. */
+ char const *prev_prod; /* Previous software product. */
+ char const *pman; /* Current software manufacturer. */
+ char const *pprod; /* Current software product. */
+ int have_chap; /* Flag: Chapter was started. */
+ int have_tab; /* Flag: Table was started. */
+ int ie; /* Input encoding. */
+ $? "+ itadmin_license_write_available"
+ ie = dk3app_get_encoding(job->app);
+ have_chap = have_tab = 0;
+ prev_man = NULL; prev_prod = NULL;
+ dk3sto_it_reset(job->i_lf);
+ while(NULL != (li = (itadmin_license *)dk3sto_it_next(job->i_lf))) {
+ if(!(have_chap)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[4]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[48], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[49], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[50], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_chap = 1;
+ pman = itadmin_license_get_manufacturer(li); $? ". pman = \"%!8s\"", TR_8STR(pman)
+ pprod = itadmin_license_get_product(li); $? ". pprod = \"%!8s\"", TR_8STR(pprod)
+ switch(itadmin_license_change_level(pman, prev_man, pprod, prev_prod)) {
+ case 2: { /* Manufacturer changed. */
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[6]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[8]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pman);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[9]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pprod);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ have_tab = 0;
+ } break;
+ case 1: { /* Product changed. */
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[6]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[9]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pprod);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ have_tab = 0;
+ } break;
+ default: { /* No change. */
+ if(have_tab) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[23]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ } break;
+ }
+ if(!(have_tab)) {
+ itadmin_license_start_longtable_for_licenses(job, os);
+ have_tab = 1;
+ }
+ itadmin_license_write_license(job, os, li, pman, pprod, 0, 0, 0, 0, 0);
+ prev_man = pman; prev_prod = pprod;
+ }
+ if(have_chap) {
+ if(have_tab) {
+ /* end{longtable} */
+ itadmin_license_end_longtable_for_licenses(job, os);
+ }
+ /* clearpage */
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[6]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } $? "- itadmin_license_write_available"
+}
+
+
+
+/** Write license report per user/host.
+ @param job Job structure.
+ @param os Output stream.
+*/
+static
+void
+itadmin_license_write_user(itadmin_job *job, dk3_stream_t *os)
+{
+ itadmin_user *us;
+ itadmin_host *ho;
+ itadmin_license *li;
+ char const *pman;
+ char const *pprod;
+ char const *prev_man;
+ char const *prev_prod;
+ int have_chap;
+ int have_sec;
+#if VERSION_BEFORE_20150821
+ int have_subsec;
+#endif
+ int have_tab;
+ int ie;
+ $? "+ itadmin_license_write_user"
+ ie = dk3app_get_encoding(job->app);
+ dk3sto_it_reset(job->i_us);
+ while(NULL != (us = (itadmin_user *)dk3sto_it_next(job->i_us))) {
+ have_chap = 0;
+#if VERSION_BEFORE_20150821
+ have_sec = 0;
+#endif
+#if VERSION_BEFORE_20150821
+ have_subsec = 0;
+#endif
+#if VERSION_BEFORE_20150821
+ have_tab = 0;
+#endif
+ /*
+ Licenses on hosts
+ */
+ if(us->i_ho) {
+ dk3sto_it_reset(us->i_ho);
+ while(NULL != (ho = (itadmin_host *)dk3sto_it_next(us->i_ho))) {
+ have_sec = 0;
+#if VERSION_BEFORE_20150821
+ have_subsec = 0;
+#endif
+ if(ho->i_li) {
+ prev_man = NULL;
+ prev_prod = NULL;
+ have_tab = 0;
+ dk3sto_it_reset(ho->i_li);
+ while(NULL != (li = (itadmin_license *)dk3sto_it_next(ho->i_li))) {
+ pman = itadmin_license_get_manufacturer(li);
+ pprod = itadmin_license_get_product(li);
+ switch(itadmin_license_change_level(pman,prev_man,pprod,prev_prod))
+ {
+ case 2: { /* Manufacturer changed. */
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ } have_tab = 0;
+ if(!(have_chap)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[28]);
+ itadmin_tool_write_user_latex_short(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[29]);
+ itadmin_tool_write_user_latex_long(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_chap = 1;
+ if(!(have_sec)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[8]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ho->sn);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_sec = 1;
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[9]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pman);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } break;
+ default: { /* Manufacturer unchanged. */
+ if(have_tab) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[23]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ } break;
+ }
+ if(!(have_tab)) {
+ itadmin_license_start_longtable_for_licenses(job, os);
+ have_tab = 1;
+ }
+ itadmin_license_write_license(job, os, li, pman, pprod, 0, 1, 0, 0, 2);
+ prev_man = pman; prev_prod = pprod;
+ }
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ }
+ if(have_sec) {
+ /* clearpage */
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[6]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ }
+ }
+ }
+ if(us->i_li) {
+ /*
+ Licenses not assigned to hosts
+ */
+ have_sec = 0; have_tab = 0;
+ dk3sto_it_reset(us->i_li);
+ prev_man = NULL; prev_prod = NULL;
+ while(NULL != (li = (itadmin_license *)dk3sto_it_next(us->i_li))) {
+ if(!(li->host)) {
+ pman = itadmin_license_get_manufacturer(li);
+ pprod = itadmin_license_get_product(li);
+ switch(itadmin_license_change_level(pman,prev_man,pprod,prev_prod))
+ {
+ case 2: { /* Manufacturer changed */
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ } have_tab = 0;
+ if(!(have_chap)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[28]);
+ itadmin_tool_write_user_latex_short(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[29]);
+ itadmin_tool_write_user_latex_long(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_chap = 1;
+ if(!(have_sec)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[30]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[60], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[29]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[61], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[64], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[65], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[66], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_sec = 1;
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[9]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pman);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[10]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pprod);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } break;
+ case 1: { /* Product changed */
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ } have_tab = 0;
+ if(!(have_chap)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[28]);
+ itadmin_tool_write_user_latex_short(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[29]);
+ itadmin_tool_write_user_latex_long(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_chap = 1;
+ if(!(have_sec)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[30]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[60], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[29]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[61], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[64], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[65], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[66], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_sec = 1;
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[10]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pprod);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } break;
+ default: {
+ if(have_tab) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[23]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ } break;
+ }
+ if(!(have_tab)) {
+ itadmin_license_start_longtable_for_licenses(job, os);
+ have_tab = 1;
+ }
+ itadmin_license_write_license(job, os, li, pman, pprod, 0, 0, 0, 0, 0);
+ prev_man = pman; prev_prod = pprod;
+ }
+ }
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ }
+ if(have_sec) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[6]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ /*
+ Licenses used on other users computers
+ */
+ have_sec = 0; have_tab = 0;
+ dk3sto_it_reset(us->i_li);
+ prev_man = NULL; prev_prod = NULL;
+ while(NULL != (li = (itadmin_license *)dk3sto_it_next(us->i_li))) {
+ if(li->host) {
+ pman = itadmin_license_get_manufacturer(li);
+ pprod = itadmin_license_get_product(li);
+ switch(itadmin_license_change_level(pman,prev_man,pprod,prev_prod))
+ {
+ case 2: { /* Manufacturer changed */
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ } have_tab = 0;
+ if(!(have_chap)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[28]);
+ itadmin_tool_write_user_latex_short(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[29]);
+ itadmin_tool_write_user_latex_long(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_chap = 1;
+ if(!(have_sec)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[30]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[62], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[29]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[63], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[67], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[68], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[69], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[31]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[70], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[32]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[71], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[72], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[73], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[74], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[75], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_sec = 1;
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[9]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pman);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[10]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pprod);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } break;
+ case 1: { /* Product changed */
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ } have_tab = 0;
+ if(!(have_chap)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[28]);
+ itadmin_tool_write_user_latex_short(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[29]);
+ itadmin_tool_write_user_latex_long(job, os, us);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_chap = 1;
+ if(!(have_sec)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[30]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[62], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[29]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[63], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[67], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[68], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[69], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[26]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[31]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[70], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[32]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[71], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[72], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[73], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[74], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[75], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } have_sec = 1;
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[10]);
+ dk3uc2lat_c8_utf8_stputs(job->uc2l, os, pprod);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ } break;
+ default: {
+ if(have_tab) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[23]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ } break;
+ }
+ if(!(have_tab)) {
+ itadmin_license_start_longtable_for_licenses(job, os);
+ have_tab = 1;
+ }
+ itadmin_license_write_license(job, os, li, pman, pprod, 0, 0, 0, 1, 1);
+ prev_man = pman; prev_prod = pprod;
+ }
+ }
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ }
+ if(have_sec) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[6]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ }
+ } $? "- itadmin_license_write_user"
+}
+
+
+
+/** Write complete list of licenses.
+ @param job Job structure.
+ @param os Output stream.
+*/
+static
+void
+itadmin_license_write_complete_list(itadmin_job *job, dk3_stream_t *os)
+{
+ itadmin_license *li;
+ char const *pman;
+ char const *pprod;
+ int have_tab = 0;
+ int ie;
+ ie = dk3app_get_encoding(job->app);
+ dk3sto_it_reset(job->i_lc);
+ while(NULL != (li = (itadmin_license *)dk3sto_it_next(job->i_lc))) {
+ if(!(have_tab)) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[4]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[59], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ itadmin_license_start_longtable_for_licenses(job, os);
+ } else {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[23]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ have_tab = 1;
+ pman = itadmin_license_get_manufacturer(li);
+ pprod = itadmin_license_get_product(li);
+ itadmin_license_write_license(job, os, li, pman, pprod, 1, 1, 1, 1, 1);
+ }
+ if(have_tab) {
+ itadmin_license_end_longtable_for_licenses(job, os);
+ }
+}
+
+
+
+/** Write license report to file.
+ @param job Job structure.
+ @param os Output stream.
+*/
+static
+void
+itadmin_license_write_file(itadmin_job *job, dk3_stream_t *os)
+{
+ int ie;
+ ie = dk3app_get_encoding(job->app);
+ if(job->ukoma) {
+ itadmin_tool_write_section(job, os, itadmin_license_file_start1a);
+ } else {
+ itadmin_tool_write_section(job, os, itadmin_license_file_start1b);
+ }
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ dk3stream_strputs(os, (job->msg)[2], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ itadmin_tool_write_section(job, os, itadmin_license_file_start4);
+ /* pdftitle */
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[11]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[51], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[17]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ /* pdfsubject */
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[12]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[52], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[17]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ /* pdfauthor */
+ if(job->admn) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[13]);
+ dk3uc2lat_stputs(job->uc2l, os, job->admn, ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[17]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ /* pdfcreator */
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[14]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ itadmin_tool_write_section(job, os, itadmin_license_file_start2);
+ /* author */
+ if(job->admn) {
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[15]);
+ dk3uc2lat_stputs(job->uc2l, os, job->admn, ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ }
+ /* title */
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[16]);
+ dk3uc2lat_stputs(job->uc2l, os, (job->msg)[51], ie);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[5]);
+ dk3stream_c8_fputs(os, itadmin_license_c8_kw[0]);
+ if(job->ukoma) {
+ itadmin_tool_write_section(job, os, itadmin_license_file_start3a);
+ }
+ itadmin_tool_write_section(job, os, itadmin_license_file_start3);
+ itadmin_license_write_available(job, os);
+ itadmin_license_write_user(job, os);
+ itadmin_license_write_complete_list(job, os);
+ dk3uc2lat_final_report(job->uc2l, os);
+ itadmin_tool_write_section(job, os, itadmin_license_file_end);
+}
+
+
+
+int
+itadmin_license_report(itadmin_job *job)
+{
+ FILE *fipo;
+ dk3_stream_t *os;
+ int back = 0;
+ $? "+ itadmin_license_report"
+ fipo = dk3sf_c8_fopen_app(
+ itadmin_license_c8_kw[2],
+ itadmin_license_c8_kw[3],
+ job->app
+ );
+ if(fipo) {
+ os = dk3stream_open_file_app(fipo, DK3_STREAM_FLAG_WRITE, job->app);
+ if(os) {
+ back = 1;
+ itadmin_license_write_file(job, os);
+ dk3stream_close(os);
+ }
+#if DK3_CHAR_SIZE == 1
+ if(!dk3sf_fclose_fn_app(fipo, itadmin_license_c8_kw[2], job->app)) {
+ back = 0;
+ }
+#else
+ if(!dk3sf_fclose_fn_app(fipo, NULL, job->app)) {
+ back = 0;
+ }
+#endif
+ }
+ $? "- itadmin_license_report %d", back
+ return back;
+}
+
+