\hypertarget{unicoverage_8c}{}\doxysection{src/unicoverage.c File Reference}
\label{unicoverage_8c}\index{src/unicoverage.c@{src/unicoverage.c}}


unicoverage -\/ Show the coverage of Unicode plane scripts for a GNU Unifont hex glyph file  


{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
Include dependency graph for unicoverage.\+c\+:
% FIG 0
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{unicoverage_8c_ad7871643c05865c80f5d8050aead2b57}{MAXBUF}}~256
\begin{DoxyCompactList}\small\item\em Maximum input line length -\/ 1. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \mbox{\hyperlink{unicoverage_8c_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\begin{DoxyCompactList}\small\item\em The main function. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{unicoverage_8c_ae0cf1429d0cf858fa930c666d8e73954}{nextrange}} (FILE $\ast$coveragefp, unsigned $\ast$cstart, unsigned $\ast$cend, char $\ast$coverstring)
\begin{DoxyCompactList}\small\item\em Get next Unicode range. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{unicoverage_8c_a71344b70c39c2995545c3ced4d134ec8}{print\+\_\+subtotal}} (FILE $\ast$outfp, int print\+\_\+n, int nglyphs, unsigned cstart, unsigned cend, char $\ast$coverstring)
\begin{DoxyCompactList}\small\item\em Print the subtotal for one Unicode script range. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
unicoverage -\/ Show the coverage of Unicode plane scripts for a GNU Unifont hex glyph file 

\begin{DoxyAuthor}{Author}
Paul Hardy, unifoundry $<$at$>$ unifoundry.\+com, 6 January 2008
\end{DoxyAuthor}
\begin{DoxyCopyright}{Copyright}
Copyright (C) 2008, 2013 Paul Hardy
\end{DoxyCopyright}
Synopsis\+: unicoverage \mbox{[}-\/ifont\+\_\+file.\+hex\mbox{]} \mbox{[}-\/ocoverage\+\_\+file.\+txt\mbox{]}

This program requires the file \char`\"{}coverage.\+dat\char`\"{} to be present in the directory from which it is run. 

Definition in file \mbox{\hyperlink{unicoverage_8c_source}{unicoverage.\+c}}.



\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{unicoverage_8c_ad7871643c05865c80f5d8050aead2b57}\label{unicoverage_8c_ad7871643c05865c80f5d8050aead2b57}} 
\index{unicoverage.c@{unicoverage.c}!MAXBUF@{MAXBUF}}
\index{MAXBUF@{MAXBUF}!unicoverage.c@{unicoverage.c}}
\doxysubsubsection{\texorpdfstring{MAXBUF}{MAXBUF}}
{\footnotesize\ttfamily \#define MAXBUF~256}



Maximum input line length -\/ 1. 



Definition at line \mbox{\hyperlink{unicoverage_8c_source_l00063}{63}} of file \mbox{\hyperlink{unicoverage_8c_source}{unicoverage.\+c}}.



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{unicoverage_8c_a0ddf1224851353fc92bfbff6f499fa97}\label{unicoverage_8c_a0ddf1224851353fc92bfbff6f499fa97}} 
\index{unicoverage.c@{unicoverage.c}!main@{main}}
\index{main@{main}!unicoverage.c@{unicoverage.c}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc,  }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}



The main function. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em argc} & The count of command line arguments. \\
\hline
\mbox{\texttt{ in}}  & {\em argv} & Pointer to array of command line arguments. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
This program exits with status 0. 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{unicoverage_8c_source_l00074}{74}} of file \mbox{\hyperlink{unicoverage_8c_source}{unicoverage.\+c}}.


\begin{DoxyCode}{0}
\DoxyCodeLine{00075 \{}
\DoxyCodeLine{00076 }
\DoxyCodeLine{00077    \textcolor{keywordtype}{int}      print\_n=0;        \textcolor{comment}{/* print \# of glyphs, not percentage   */}}
\DoxyCodeLine{00078    \textcolor{keywordtype}{unsigned} i;                \textcolor{comment}{/* loop variable                       */}}
\DoxyCodeLine{00079    \textcolor{keywordtype}{unsigned} slen;             \textcolor{comment}{/* string length of coverage file line */}}
\DoxyCodeLine{00080    \textcolor{keywordtype}{char}     inbuf[256];       \textcolor{comment}{/* input buffer                        */}}
\DoxyCodeLine{00081    \textcolor{keywordtype}{unsigned} thischar;         \textcolor{comment}{/* the current character               */}}
\DoxyCodeLine{00082 }
\DoxyCodeLine{00083    \textcolor{keywordtype}{char} *infile=\textcolor{stringliteral}{"{}"{}}, *outfile=\textcolor{stringliteral}{"{}"{}};  \textcolor{comment}{/* names of input and output files        */}}
\DoxyCodeLine{00084    FILE *infp, *outfp;        \textcolor{comment}{/* file pointers of input and output files    */}}
\DoxyCodeLine{00085    FILE *coveragefp;          \textcolor{comment}{/* file pointer to coverage.dat file          */}}
\DoxyCodeLine{00086    \textcolor{keywordtype}{unsigned} cstart, cend;     \textcolor{comment}{/* current coverage start and end code points */}}
\DoxyCodeLine{00087    \textcolor{keywordtype}{char} coverstring[\mbox{\hyperlink{unicoverage_8c_ad7871643c05865c80f5d8050aead2b57}{MAXBUF}}];  \textcolor{comment}{/* description of current coverage range      */}}
\DoxyCodeLine{00088    \textcolor{keywordtype}{int} nglyphs;               \textcolor{comment}{/* number of glyphs in this section           */}}
\DoxyCodeLine{00089 }
\DoxyCodeLine{00090    \textcolor{comment}{/* to get next range \& name of Unicode glyphs */}}
\DoxyCodeLine{00091    \textcolor{keywordtype}{int} \mbox{\hyperlink{unicoverage_8c_ae0cf1429d0cf858fa930c666d8e73954}{nextrange}} (FILE *coveragefp, \textcolor{keywordtype}{unsigned} *cstart, \textcolor{keywordtype}{unsigned} *cend,}
\DoxyCodeLine{00092                   \textcolor{keywordtype}{char} *coverstring);}
\DoxyCodeLine{00093 }
\DoxyCodeLine{00094    \textcolor{keywordtype}{void} \mbox{\hyperlink{unicoverage_8c_a71344b70c39c2995545c3ced4d134ec8}{print\_subtotal}} (FILE *outfp, \textcolor{keywordtype}{int} print\_n, \textcolor{keywordtype}{int} nglyphs,}
\DoxyCodeLine{00095                         \textcolor{keywordtype}{unsigned} cstart, \textcolor{keywordtype}{unsigned} cend, \textcolor{keywordtype}{char} *coverstring);}
\DoxyCodeLine{00096 }
\DoxyCodeLine{00097    \textcolor{keywordflow}{if} ((coveragefp = fopen (\textcolor{stringliteral}{"{}coverage.dat"{}}, \textcolor{stringliteral}{"{}r"{}})) == NULL) \{}
\DoxyCodeLine{00098       fprintf (stderr, \textcolor{stringliteral}{"{}\(\backslash\)nError: data file \(\backslash\)"{}coverage.dat\(\backslash\)"{} not found.\(\backslash\)n\(\backslash\)n"{}});}
\DoxyCodeLine{00099       exit (0);}
\DoxyCodeLine{00100    \}}
\DoxyCodeLine{00101 }
\DoxyCodeLine{00102    \textcolor{keywordflow}{if} (argc > 1) \{}
\DoxyCodeLine{00103       \textcolor{keywordflow}{for} (i = 1; i < argc; i++) \{}
\DoxyCodeLine{00104          \textcolor{keywordflow}{if} (argv[i][0] == \textcolor{charliteral}{'-\/'}) \{  \textcolor{comment}{/* this is an option argument */}}
\DoxyCodeLine{00105             \textcolor{keywordflow}{switch} (argv[i][1]) \{}
\DoxyCodeLine{00106                \textcolor{keywordflow}{case} \textcolor{charliteral}{'i'}:  \textcolor{comment}{/* name of input file */}}
\DoxyCodeLine{00107                   infile = \&argv[i][2];}
\DoxyCodeLine{00108                   \textcolor{keywordflow}{break};}
\DoxyCodeLine{00109                \textcolor{keywordflow}{case} \textcolor{charliteral}{'n'}:  \textcolor{comment}{/* print number of glyphs instead of percentage */}}
\DoxyCodeLine{00110                   print\_n = 1;}
\DoxyCodeLine{00111                \textcolor{keywordflow}{case} \textcolor{charliteral}{'o'}:  \textcolor{comment}{/* name of output file */}}
\DoxyCodeLine{00112                   outfile = \&argv[i][2];}
\DoxyCodeLine{00113                   \textcolor{keywordflow}{break};}
\DoxyCodeLine{00114                \textcolor{keywordflow}{default}:   \textcolor{comment}{/* if unrecognized option, print list and exit */}}
\DoxyCodeLine{00115                   fprintf (stderr, \textcolor{stringliteral}{"{}\(\backslash\)nSyntax:\(\backslash\)n\(\backslash\)n"{}});}
\DoxyCodeLine{00116                   fprintf (stderr, \textcolor{stringliteral}{"{}   \%s -\/p<Unicode\_Page> "{}}, argv[0]);}
\DoxyCodeLine{00117                   fprintf (stderr, \textcolor{stringliteral}{"{}-\/i<Input\_File> -\/o<Output\_File> -\/w\(\backslash\)n\(\backslash\)n"{}});}
\DoxyCodeLine{00118                   exit (1);}
\DoxyCodeLine{00119             \}}
\DoxyCodeLine{00120          \}}
\DoxyCodeLine{00121       \}}
\DoxyCodeLine{00122    \}}
\DoxyCodeLine{00123    \textcolor{comment}{/*}}
\DoxyCodeLine{00124 \textcolor{comment}{      Make sure we can open any I/O files that were specified before}}
\DoxyCodeLine{00125 \textcolor{comment}{      doing anything else.}}
\DoxyCodeLine{00126 \textcolor{comment}{   */}}
\DoxyCodeLine{00127    \textcolor{keywordflow}{if} (strlen (infile) > 0) \{}
\DoxyCodeLine{00128       \textcolor{keywordflow}{if} ((infp = fopen (infile, \textcolor{stringliteral}{"{}r"{}})) == NULL) \{}
\DoxyCodeLine{00129          fprintf (stderr, \textcolor{stringliteral}{"{}Error: can't open \%s for input.\(\backslash\)n"{}}, infile);}
\DoxyCodeLine{00130          exit (1);}
\DoxyCodeLine{00131       \}}
\DoxyCodeLine{00132    \}}
\DoxyCodeLine{00133    \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{00134       infp = stdin;}
\DoxyCodeLine{00135    \}}
\DoxyCodeLine{00136    \textcolor{keywordflow}{if} (strlen (outfile) > 0) \{}
\DoxyCodeLine{00137       \textcolor{keywordflow}{if} ((outfp = fopen (outfile, \textcolor{stringliteral}{"{}w"{}})) == NULL) \{}
\DoxyCodeLine{00138          fprintf (stderr, \textcolor{stringliteral}{"{}Error: can't open \%s for output.\(\backslash\)n"{}}, outfile);}
\DoxyCodeLine{00139          exit (1);}
\DoxyCodeLine{00140       \}}
\DoxyCodeLine{00141    \}}
\DoxyCodeLine{00142    \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{00143       outfp = stdout;}
\DoxyCodeLine{00144    \}}
\DoxyCodeLine{00145 }
\DoxyCodeLine{00146    \textcolor{comment}{/*}}
\DoxyCodeLine{00147 \textcolor{comment}{      Print header row.}}
\DoxyCodeLine{00148 \textcolor{comment}{   */}}
\DoxyCodeLine{00149    \textcolor{keywordflow}{if} (print\_n) \{}
\DoxyCodeLine{00150       fprintf (outfp, \textcolor{stringliteral}{"{}\# Glyphs      Range        Script\(\backslash\)n"{}});}
\DoxyCodeLine{00151       fprintf (outfp, \textcolor{stringliteral}{"{}-\/-\/-\/-\/-\/-\/-\/-\/      -\/-\/-\/-\/-\/        -\/-\/-\/-\/-\/-\/\(\backslash\)n"{}});}
\DoxyCodeLine{00152    \}}
\DoxyCodeLine{00153    \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{00154       fprintf (outfp, \textcolor{stringliteral}{"{}Covered      Range        Script\(\backslash\)n"{}});}
\DoxyCodeLine{00155       fprintf (outfp, \textcolor{stringliteral}{"{}-\/-\/-\/-\/-\/-\/-\/      -\/-\/-\/-\/-\/        -\/-\/-\/-\/-\/-\/\(\backslash\)n\(\backslash\)n"{}});}
\DoxyCodeLine{00156    \}}
\DoxyCodeLine{00157 }
\DoxyCodeLine{00158    slen = \mbox{\hyperlink{unicoverage_8c_ae0cf1429d0cf858fa930c666d8e73954}{nextrange}} (coveragefp, \&cstart, \&cend, coverstring);}
\DoxyCodeLine{00159    nglyphs = 0;}
\DoxyCodeLine{00160 }
\DoxyCodeLine{00161    \textcolor{comment}{/*}}
\DoxyCodeLine{00162 \textcolor{comment}{      Read in the glyphs in the file}}
\DoxyCodeLine{00163 \textcolor{comment}{   */}}
\DoxyCodeLine{00164    \textcolor{keywordflow}{while} (slen != 0 \&\& fgets (inbuf, \mbox{\hyperlink{unicoverage_8c_ad7871643c05865c80f5d8050aead2b57}{MAXBUF}}-\/1, infp) != NULL) \{}
\DoxyCodeLine{00165       sscanf (inbuf, \textcolor{stringliteral}{"{}\%x"{}}, \&thischar);}
\DoxyCodeLine{00166 }
\DoxyCodeLine{00167       \textcolor{comment}{/* Read a character beyond end of current script. */}}
\DoxyCodeLine{00168       \textcolor{keywordflow}{while} (cend < thischar \&\& slen != 0) \{}
\DoxyCodeLine{00169          \mbox{\hyperlink{unicoverage_8c_a71344b70c39c2995545c3ced4d134ec8}{print\_subtotal}} (outfp, print\_n, nglyphs, cstart, cend, coverstring);}
\DoxyCodeLine{00170 }
\DoxyCodeLine{00171          \textcolor{comment}{/* start new range total */}}
\DoxyCodeLine{00172          slen = \mbox{\hyperlink{unicoverage_8c_ae0cf1429d0cf858fa930c666d8e73954}{nextrange}} (coveragefp, \&cstart, \&cend, coverstring);}
\DoxyCodeLine{00173          nglyphs = 0;}
\DoxyCodeLine{00174       \}}
\DoxyCodeLine{00175       nglyphs++;}
\DoxyCodeLine{00176    \}}
\DoxyCodeLine{00177 }
\DoxyCodeLine{00178    \mbox{\hyperlink{unicoverage_8c_a71344b70c39c2995545c3ced4d134ec8}{print\_subtotal}} (outfp, print\_n, nglyphs, cstart, cend, coverstring);}
\DoxyCodeLine{00179 }
\DoxyCodeLine{00180    exit (0);}
\DoxyCodeLine{00181 \}}

\end{DoxyCode}
Here is the call graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=229pt]{unicoverage_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{unicoverage_8c_ae0cf1429d0cf858fa930c666d8e73954}\label{unicoverage_8c_ae0cf1429d0cf858fa930c666d8e73954}} 
\index{unicoverage.c@{unicoverage.c}!nextrange@{nextrange}}
\index{nextrange@{nextrange}!unicoverage.c@{unicoverage.c}}
\doxysubsubsection{\texorpdfstring{nextrange()}{nextrange()}}
{\footnotesize\ttfamily int nextrange (\begin{DoxyParamCaption}\item[{FILE $\ast$}]{coveragefp,  }\item[{unsigned $\ast$}]{cstart,  }\item[{unsigned $\ast$}]{cend,  }\item[{char $\ast$}]{coverstring }\end{DoxyParamCaption})}



Get next Unicode range. 

This function reads the next Unicode script range to count its glyph coverage.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em coveragefp} & File pointer to Unicode script range data file. \\
\hline
\mbox{\texttt{ in}}  & {\em cstart} & Starting code point in current Unicode script range. \\
\hline
\mbox{\texttt{ in}}  & {\em cend} & Ending code point in current Unicode script range. \\
\hline
\mbox{\texttt{ out}}  & {\em coverstring} & String containing $<$cstart$>$-\/$<$cend$>$ substring. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Length of the last string read, or 0 for end of file. 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{unicoverage_8c_source_l00196}{196}} of file \mbox{\hyperlink{unicoverage_8c_source}{unicoverage.\+c}}.


\begin{DoxyCode}{0}
\DoxyCodeLine{00199 \{}
\DoxyCodeLine{00200    \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{00201    \textcolor{keyword}{static} \textcolor{keywordtype}{char} inbuf[\mbox{\hyperlink{unicoverage_8c_ad7871643c05865c80f5d8050aead2b57}{MAXBUF}}];}
\DoxyCodeLine{00202    \textcolor{keywordtype}{int} retval;         \textcolor{comment}{/* the return value */}}
\DoxyCodeLine{00203 }
\DoxyCodeLine{00204    retval = 0;}
\DoxyCodeLine{00205 }
\DoxyCodeLine{00206    \textcolor{keywordflow}{do} \{}
\DoxyCodeLine{00207       \textcolor{keywordflow}{if} (fgets (inbuf, \mbox{\hyperlink{unicoverage_8c_ad7871643c05865c80f5d8050aead2b57}{MAXBUF}}-\/1, coveragefp) != NULL) \{}
\DoxyCodeLine{00208          retval = strlen (inbuf);}
\DoxyCodeLine{00209          \textcolor{keywordflow}{if} ((inbuf[0] >= \textcolor{charliteral}{'0'} \&\& inbuf[0] <= \textcolor{charliteral}{'9'}) ||}
\DoxyCodeLine{00210              (inbuf[0] >= \textcolor{charliteral}{'A'} \&\& inbuf[0] <= \textcolor{charliteral}{'F'}) ||}
\DoxyCodeLine{00211              (inbuf[0] >= \textcolor{charliteral}{'a'} \&\& inbuf[0] <= \textcolor{charliteral}{'f'})) \{}
\DoxyCodeLine{00212             sscanf (inbuf, \textcolor{stringliteral}{"{}\%x-\/\%x"{}}, cstart, cend);}
\DoxyCodeLine{00213             i = 0;}
\DoxyCodeLine{00214             \textcolor{keywordflow}{while} (inbuf[i] != \textcolor{charliteral}{' '}) i++;  \textcolor{comment}{/* find first blank */}}
\DoxyCodeLine{00215             \textcolor{keywordflow}{while} (inbuf[i] == \textcolor{charliteral}{' '}) i++;  \textcolor{comment}{/* find next non-\/blank */}}
\DoxyCodeLine{00216             strncpy (coverstring, \&inbuf[i], \mbox{\hyperlink{unicoverage_8c_ad7871643c05865c80f5d8050aead2b57}{MAXBUF}});}
\DoxyCodeLine{00217          \}}
\DoxyCodeLine{00218          \textcolor{keywordflow}{else} retval = 0;}
\DoxyCodeLine{00219       \}}
\DoxyCodeLine{00220       \textcolor{keywordflow}{else} retval = 0;}
\DoxyCodeLine{00221    \} \textcolor{keywordflow}{while} (retval == 0 \&\& !feof (coveragefp));}
\DoxyCodeLine{00222 }
\DoxyCodeLine{00223    \textcolor{keywordflow}{return} (retval);}
\DoxyCodeLine{00224 \}}

\end{DoxyCode}
Here is the caller graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=213pt]{unicoverage_8c_ae0cf1429d0cf858fa930c666d8e73954_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{unicoverage_8c_a71344b70c39c2995545c3ced4d134ec8}\label{unicoverage_8c_a71344b70c39c2995545c3ced4d134ec8}} 
\index{unicoverage.c@{unicoverage.c}!print\_subtotal@{print\_subtotal}}
\index{print\_subtotal@{print\_subtotal}!unicoverage.c@{unicoverage.c}}
\doxysubsubsection{\texorpdfstring{print\_subtotal()}{print\_subtotal()}}
{\footnotesize\ttfamily void print\+\_\+subtotal (\begin{DoxyParamCaption}\item[{FILE $\ast$}]{outfp,  }\item[{int}]{print\+\_\+n,  }\item[{int}]{nglyphs,  }\item[{unsigned}]{cstart,  }\item[{unsigned}]{cend,  }\item[{char $\ast$}]{coverstring }\end{DoxyParamCaption})}



Print the subtotal for one Unicode script range. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em outfp} & Pointer to output file. \\
\hline
\mbox{\texttt{ in}}  & {\em print\+\_\+n} & 1 = print number of glyphs, 0 = print percentage. \\
\hline
\mbox{\texttt{ in}}  & {\em nglyphs} & Number of glyphs in current range. \\
\hline
\mbox{\texttt{ in}}  & {\em cstart} & Starting code point for current range. \\
\hline
\mbox{\texttt{ in}}  & {\em cend} & Ending code point for current range. \\
\hline
\mbox{\texttt{ in}}  & {\em coverstring} & Character string of \char`\"{}$<$cstart$>$-\/$<$cend$>$\char`\"{}. \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{unicoverage_8c_source_l00237}{237}} of file \mbox{\hyperlink{unicoverage_8c_source}{unicoverage.\+c}}.


\begin{DoxyCode}{0}
\DoxyCodeLine{00238                                                                         \{}
\DoxyCodeLine{00239 }
\DoxyCodeLine{00240    \textcolor{comment}{/* print old range total */}}
\DoxyCodeLine{00241    \textcolor{keywordflow}{if} (print\_n) \{  \textcolor{comment}{/* Print number of glyphs, not percentage */}}
\DoxyCodeLine{00242       fprintf (outfp, \textcolor{stringliteral}{"{} \%6d "{}}, nglyphs);}
\DoxyCodeLine{00243    \}}
\DoxyCodeLine{00244    \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{00245       fprintf (outfp, \textcolor{stringliteral}{"{} \%5.1f\%\%"{}}, 100.0*nglyphs/(1+cend-\/cstart));}
\DoxyCodeLine{00246    \}}
\DoxyCodeLine{00247 }
\DoxyCodeLine{00248    \textcolor{keywordflow}{if} (cend < 0x10000)}
\DoxyCodeLine{00249       fprintf (outfp, \textcolor{stringliteral}{"{}  U+\%04X..U+\%04X   \%s"{}},}
\DoxyCodeLine{00250                cstart, cend, coverstring);}
\DoxyCodeLine{00251    \textcolor{keywordflow}{else}}
\DoxyCodeLine{00252       fprintf (outfp, \textcolor{stringliteral}{"{} U+\%05X..U+\%05X  \%s"{}},}
\DoxyCodeLine{00253                cstart, cend, coverstring);}
\DoxyCodeLine{00254 }
\DoxyCodeLine{00255    \textcolor{keywordflow}{return};}
\DoxyCodeLine{00256 \}}

\end{DoxyCode}
Here is the caller graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=229pt]{unicoverage_8c_a71344b70c39c2995545c3ced4d134ec8_icgraph}
\end{center}
\end{figure}
