@@ -63,14 +63,24 @@ static const char * const LLM_KV_QUANTIZE_IMATRIX_DATASET    = "quantize.imatrix
6363static  const  char  * const  LLM_KV_QUANTIZE_IMATRIX_N_ENTRIES  = " quantize.imatrix.entries_count" 
6464static  const  char  * const  LLM_KV_QUANTIZE_IMATRIX_N_CHUNKS   = " quantize.imatrix.chunks_count" 
6565
66+ static  bool  striequals (const  char  * a, const  char  * b) {
67+     while  (*a && *b) {
68+         if  (std::tolower (*a) != std::tolower (*b)) {
69+             return  false ;
70+         }
71+         a++; b++;
72+     }
73+     return  *a == *b;
74+ }
75+ 
6676static  bool  try_parse_ftype (const  std::string & ftype_str_in, llama_ftype & ftype, std::string & ftype_str_out) {
6777    std::string ftype_str;
6878
6979    for  (auto  ch : ftype_str_in) {
7080        ftype_str.push_back (std::toupper (ch));
7181    }
7282    for  (auto  & it : QUANT_OPTIONS) {
73-         if  (it.name  ==  ftype_str) {
83+         if  (striequals ( it.name . c_str (),  ftype_str. c_str ()) ) {
7484            ftype = it.ftype ;
7585            ftype_str_out = it.name ;
7686            return  true ;
@@ -225,15 +235,15 @@ static int prepare_imatrix(const std::string & imatrix_file,
225235}
226236
227237static  ggml_type parse_ggml_type (const  char  * arg) {
228-     ggml_type result = GGML_TYPE_COUNT;
229-     for  (int  j = 0 ; j < GGML_TYPE_COUNT; ++j) {
230-         auto  type = ggml_type (j);
238+     for  (int  i = 0 ; i < GGML_TYPE_COUNT; ++i) {
239+         auto  type = (ggml_type)i;
231240        const  auto  * name = ggml_type_name (type);
232-         if  (name && strcmp (arg, name) ==  0 ) {
233-             result =  type;  break ;
241+         if  (name && striequals (name, arg) ) {
242+             return   type;
234243        }
235244    }
236-     return  result;
245+     fprintf (stderr, " %s: invalid ggml_type '%s'\n " 
246+     return  GGML_TYPE_COUNT;
237247}
238248
239249int  main (int  argc, char  ** argv) {
@@ -254,12 +264,18 @@ int main(int argc, char ** argv) {
254264        } else  if  (strcmp (argv[arg_idx], " --output-tensor-type" 0 ) {
255265            if  (arg_idx < argc-1 ) {
256266                params.output_tensor_type  = parse_ggml_type (argv[++arg_idx]);
267+                 if  (params.output_tensor_type  == GGML_TYPE_COUNT) {
268+                     usage (argv[0 ]);
269+                 }
257270            } else  {
258271                usage (argv[0 ]);
259272            }
260273        } else  if  (strcmp (argv[arg_idx], " --token-embedding-type" 0 ) {
261274            if  (arg_idx < argc-1 ) {
262275                params.token_embedding_type  = parse_ggml_type (argv[++arg_idx]);
276+                 if  (params.token_embedding_type  == GGML_TYPE_COUNT) {
277+                     usage (argv[0 ]);
278+                 }
263279            } else  {
264280                usage (argv[0 ]);
265281            }
0 commit comments