Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  jfs_unicode.c

  Sprache: C
 

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 *   Copyright (C) International Business Machines Corp., 2000-2004
 */


#include <linux/fs.h>
#include <linux/slab.h>
#include "jfs_incore.h"
#include "jfs_filsys.h"
#include "jfs_unicode.h"
#include "jfs_debug.h"

/*
 * NAME: jfs_strfromUCS()
 *
 * FUNCTION: Convert little-endian unicode string to character string
 *
 */

int jfs_strfromUCS_le(char *to, const __le16 * from,
        int len, struct nls_table *codepage)
{
 int i;
 int outlen = 0;
 static int warn_again = 5/* Only warn up to 5 times total */
 int warn = !!warn_again; /* once per string */

 if (codepage) {
  for (i = 0; (i < len) && from[i]; i++) {
   int charlen;
   charlen =
       codepage->uni2char(le16_to_cpu(from[i]),
            &to[outlen],
            NLS_MAX_CHARSET_SIZE);
   if (charlen > 0)
    outlen += charlen;
   else
    to[outlen++] = '?';
  }
 } else {
  for (i = 0; (i < len) && from[i]; i++) {
   if (unlikely(le16_to_cpu(from[i]) & 0xff00)) {
    to[i] = '?';
    if (unlikely(warn)) {
     warn--;
     warn_again--;
     printk(KERN_ERR
   "non-latin1 character 0x%x found in JFS file name\n",
            le16_to_cpu(from[i]));
     printk(KERN_ERR
    "mount with iocharset=utf8 to access\n");
    }

   }
   else
    to[i] = (char) (le16_to_cpu(from[i]));
  }
  outlen = i;
 }
 to[outlen] = 0;
 return outlen;
}

/*
 * NAME: jfs_strtoUCS()
 *
 * FUNCTION: Convert character string to unicode string
 *
 */

static int jfs_strtoUCS(wchar_t * to, const unsigned char *from, int len,
  struct nls_table *codepage)
{
 int charlen;
 int i;

 if (codepage) {
  for (i = 0; len && *from; i++, from += charlen, len -= charlen)
  {
   charlen = codepage->char2uni(from, len, &to[i]);
   if (charlen < 1) {
    jfs_err("jfs_strtoUCS: char2uni returned %d.",
     charlen);
    jfs_err("charset = %s, char = 0x%x",
     codepage->charset, *from);
    return charlen;
   }
  }
 } else {
  for (i = 0; (i < len) && from[i]; i++)
   to[i] = (wchar_t) from[i];
 }

 to[i] = 0;
 return i;
}

/*
 * NAME: get_UCSname()
 *
 * FUNCTION: Allocate and translate to unicode string
 *
 */

int get_UCSname(struct component_name * uniName, struct dentry *dentry)
{
 struct nls_table *nls_tab = JFS_SBI(dentry->d_sb)->nls_tab;
 int length = dentry->d_name.len;

 if (length > JFS_NAME_MAX)
  return -ENAMETOOLONG;

 uniName->name =
     kmalloc_array(length + 1sizeof(wchar_t), GFP_NOFS);

 if (uniName->name == NULL)
  return -ENOMEM;

 uniName->namlen = jfs_strtoUCS(uniName->name, dentry->d_name.name,
           length, nls_tab);

 if (uniName->namlen < 0) {
  kfree(uniName->name);
  return uniName->namlen;
 }

 return 0;
}

Messung V0.5 in Prozent
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.22 Sekunden  (vorverarbeitet am  2026-06-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002