2018-10-01 10:45:39 +02:00
|
|
|
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
|
|
|
*
|
2020-06-22 22:32:47 +02:00
|
|
|
* SPDX-FileCopyrightText: 2018 Scott Harvey <scott@spharvey.me>
|
|
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
* License-Filename: LICENSE
|
2018-10-01 10:40:43 +02:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2020-06-22 22:32:47 +02:00
|
|
|
#include "Permissions.h"
|
|
|
|
|
2018-10-01 10:40:43 +02:00
|
|
|
#include <QString>
|
|
|
|
#include <QStringList>
|
|
|
|
|
2020-06-22 22:32:47 +02:00
|
|
|
Permissions::Permissions()
|
|
|
|
: m_username()
|
|
|
|
, m_group()
|
|
|
|
, m_valid( false )
|
|
|
|
, m_value( 0 )
|
2018-10-01 10:51:21 +02:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2018-10-01 10:40:43 +02:00
|
|
|
|
2020-06-22 22:32:47 +02:00
|
|
|
Permissions::Permissions( QString p )
|
|
|
|
: Permissions()
|
2018-10-01 10:40:43 +02:00
|
|
|
{
|
2020-06-22 22:32:47 +02:00
|
|
|
parsePermissions( p );
|
2018-10-01 10:40:43 +02:00
|
|
|
}
|
|
|
|
|
2020-06-22 22:32:47 +02:00
|
|
|
void
|
|
|
|
Permissions::parsePermissions( const QString& p )
|
|
|
|
{
|
2018-10-01 10:40:43 +02:00
|
|
|
|
2020-06-22 22:32:47 +02:00
|
|
|
QStringList segments = p.split( ":" );
|
2018-10-01 10:40:43 +02:00
|
|
|
|
2020-06-22 22:32:47 +02:00
|
|
|
if ( segments.length() != 3 )
|
|
|
|
{
|
2018-10-01 10:40:43 +02:00
|
|
|
m_valid = false;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2020-06-22 22:32:47 +02:00
|
|
|
if ( segments[ 0 ].isEmpty() || segments[ 1 ].isEmpty() )
|
|
|
|
{
|
2018-10-01 10:40:43 +02:00
|
|
|
m_valid = false;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ok;
|
2020-06-22 22:32:47 +02:00
|
|
|
int octal = segments[ 2 ].toInt( &ok, 8 );
|
|
|
|
if ( !ok || octal == 0 )
|
|
|
|
{
|
2018-10-01 10:40:43 +02:00
|
|
|
m_valid = false;
|
|
|
|
return;
|
2020-06-22 22:32:47 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-10-01 10:40:43 +02:00
|
|
|
m_value = octal;
|
|
|
|
}
|
|
|
|
|
|
|
|
// We have exactly three segments and the third is valid octal,
|
|
|
|
// so we can declare the string valid and set the user and group names
|
|
|
|
m_valid = true;
|
2020-06-22 22:32:47 +02:00
|
|
|
m_username = segments[ 0 ];
|
|
|
|
m_group = segments[ 1 ];
|
2018-10-01 10:40:43 +02:00
|
|
|
|
|
|
|
return;
|
|
|
|
}
|