auto
  "   'ˆl–Ðz¾”Jj"TÒ�zàœ¸”Å£ÇƒšÂË Á    '#!/usr/local/cpanel/3rdparty/bin/perl

# cpanel - scripts/disablefileprotect              Copyright 2022 cPanel, L.L.C.
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

package scripts::disablefileprotect;

use cPstrict;

BEGIN {
    if ( $ENV{PERL5LIB} ) {
        local $ENV{PERL5LIB} = '';
        exec $0, @ARGV;
    }
}

use parent qw( Cpanel::HelpfulScript );

use Cpanel::Autodie                ();
use Cpanel::FileProtect            ();
use Cpanel::FileProtect::Constants ();
use Cpanel::FileProtect::Sync      ();
use Cpanel::Filesys::Home          ();
use Cpanel::UserIterator           ();

use Try::Tiny;

use constant _OPTIONS => ();

__PACKAGE__->new(@ARGV)->run() if !caller;

sub run ($self) {

    if ( Cpanel::FileProtect->is_on() ) {
        Cpanel::FileProtect->set_off() or die "Error while setting Fileprotect flag to off: $!";
    }

    for my $mount ( Cpanel::Filesys::Home::get_all_homedirs() ) {

        # "homedir" in this context is "/home", "/home2", etc.
        my $perms = Cpanel::FileProtect::Constants::DEFAULT_MOUNT_PERMS();
        printf "Setting %s permissions to %#o â€¦ \n", $mount, $perms;
        try {
            Cpanel::Autodie::chmod( $perms, $mount );
        }
        catch {
            warn $_;
        };
    }

    print "Setting permissions for users â€¦\n";

    my $user_iter = Cpanel::UserIterator->new( 'cpanel_only' => 1 );
    while ( my $user = $user_iter->user() ) {
        print "$user â€¦\n";
        try {
            warn $_->to_string() for Cpanel::FileProtect::Sync::sync_user_homedir($user);
        }
        catch {
            warn "Skipping $user because of an error: $_\n";
        };
        $user_iter->next();
    }

    print "â€¦ Done\n";
    return;
}

sub full_help {
    return <<~"EO_HELP";
        Usage: $0 [--help]
        Unprotect the public_html directory of each user account so that all users may view its
        contents.  Use the enablefileprotect script to reverse the process.

        Options:
        --help - this screen

        EO_HELP
}

1;
  #   )ˆl–Ü4ý( ©³( 	Å€fàB¦-ÿÈƒŒ³ÇÃÌ 
I    )/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_STAT_H
#define __ASM_GENERIC_STAT_H

/*
 * Everybody gets this wrong and has to stick with it for all
 * eternity. Hopefully, this version gets used by new architectures
 * so they don't fall into the same traps.
 *
 * stat64 is copied from powerpc64, with explicit padding added.
 * stat is the same structure layout on 64-bit, without the 'long long'
 * types.
 *
 * By convention, 64 bit architectures use the stat interface, while
 * 32 bit architectures use the stat64 interface. Note that we don't
 * provide an __old_kernel_stat here, which new architecture should
 * not have to start with.
 */

#include <asm/bitsperlong.h>

#define STAT_HAVE_NSEC 1

struct stat {
	unsigned long	st_dev;		/* Device.  */
	unsigned long	st_ino;		/* File serial number.  */
	unsigned int	st_mode;	/* File mode.  */
	unsigned int	st_nlink;	/* Link count.  */
	unsigned int	st_uid;		/* User ID of the file's owner.  */
	unsigned int	st_gid;		/* Group ID of the file's group. */
	unsigned long	st_rdev;	/* Device number, if device.  */
	unsigned long	__pad1;
	long		st_size;	/* Size of file, in bytes.  */
	int		st_blksize;	/* Optimal block size for I/O.  */
	int		__pad2;
	long		st_blocks;	/* Number 512-byte blocks allocated. */
	long		st_atime;	/* Time of last access.  */
	unsigned long	st_atime_nsec;
	long		st_mtime;	/* Time of last modification.  */
	unsigned long	st_mtime_nsec;
	long		st_ctime;	/* Time of last status change.  */
	unsigned long	st_ctime_nsec;
	unsigned int	__unused4;
	unsigned int	__unused5;
};

/* This matches struct stat64 in glibc2.1. Only used for 32 bit. */
#if __BITS_PER_LONG != 64 || defined(__ARCH_WANT_STAT64)
struct stat64 {
	unsigned