diff options
Diffstat (limited to 'support/dktools/italic.ctr')
-rw-r--r-- | support/dktools/italic.ctr | 1260 |
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; +} + + |