From owner-cvs-src@FreeBSD.ORG Sun Jul 17 07:10:06 2005 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6577016A41C; Sun, 17 Jul 2005 07:10:06 +0000 (GMT) (envelope-from imura@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3877743D49; Sun, 17 Jul 2005 07:10:06 +0000 (GMT) (envelope-from imura@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j6H7A6OU084281; Sun, 17 Jul 2005 07:10:06 GMT (envelope-from imura@repoman.freebsd.org) Received: (from imura@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j6H7A5CU084280; Sun, 17 Jul 2005 07:10:05 GMT (envelope-from imura) Message-Id: <200507170710.j6H7A5CU084280@repoman.freebsd.org> From: "R. Imura" Date: Sun, 17 Jul 2005 07:10:05 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/fs/msdosfs msdosfs_conv.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2005 07:10:06 -0000 imura 2005-07-17 07:10:05 UTC FreeBSD src repository Modified files: sys/fs/msdosfs msdosfs_conv.c Log: [1] unix2doschr() If a character cannot be converted to DOS code page, unix2doschr() returned `0'. As a result, unix2dosfn() was forced to return `0', so we saw a file which was composed of these characters as `Invalid argument'. To correct this, if a character can be converted to Unicode, unix2doschr() now returns `1' which is a magic number to make unix2dosfn() know that the character must be converted to `_'. [2] unix2dosfn() The above-mentioned solution only works if a file has both of Unicode name and DOS code page name. Unicode name would not be recorded if file name can be settled within 11 bytes (DOS short name) and if no conversion from Unix charset to DOS code page has occurred. Thus, FreeBSD can create a file which has only short name, but there is no guarantee that the short name contains allways valid characters because we leave it to people by using mount_msdosfs(8) to select which conversion is used between DOS code page and unix charset. To avoid this, Unicode file name should be recorded unless a character is an ascii character. This is the way Windows XP do. PR: 77074 [1] MFC after: 1 week Revision Changes Path 1.45 +27 -10 src/sys/fs/msdosfs/msdosfs_conv.c