/*
 * ATTRIB - Wine-compatible attrib program
 *
 * Copyright 2011 Christian Costa
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "attrib.h"

#pragma makedep po

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
    STRING_NYI, "Not Yet Implemented\n\n"
    STRING_FILENOTFOUND, "%1: File Not Found\n"
    STRING_HELP,
"ATTRIB - Displays or changes file attributes.\n\
\n\
Syntax:\n\
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [drive:][path][filename]\n\
\       [/S [/D]]\n\
\n\
\Where:\n\
\n\
\  +   Sets an attribute.\n\
\  -   Clears an attribute.\n\
\  R   Read-only file attribute.\n\
\  A   Archive file attribute.\n\
\  S   System file attribute.\n\
\  H   Hidden file attribute.\n\
\  [drive:][path][filename]\n\
\      Specifies a file or files for attrib to process.\n\
\  /S  Processes matching files in the current folder and all subfolders.\n\
\  /D  Processes folders as well.\n"
}
