Which is the best way to check return result?












4















I've set a function in a shell script that checks if a folder exists, if it does not exist, tries to created it, and if it can not create the folder (for example if the user does not the right permission) return 1.
Then I check this "return", but I don't understand why "if" does not work because the return equal 1.



Code:



#!/bin/bash
# Main folders
INPUT="input"
OUTPUT="output"

# Functions

function checkFolderExist(){
if [ -d $1 ]
then
# 0 = true
# Change to 0, only for tests.
return 1
else
mkdir $1
result=$?
if [ result==0 ]
then
# 0 = true
return 0
else
# 1 = false
return 1
fi
fi
}


CHECKINPUT=$(checkFolderExist $INPUT)
echo $?
CHECKOUTPUT=$(checkFolderExist $OUTPUT)
echo $?

# If folders does not exist, exit the script
if [[ "$CHECKINPUT" = 1 || "$CHECKOUTPUT" = 1 ]]; then
echo "[+] Error. Folder does not exist. Check user permissions."
exit 1
fi









share|improve this question





























    4















    I've set a function in a shell script that checks if a folder exists, if it does not exist, tries to created it, and if it can not create the folder (for example if the user does not the right permission) return 1.
    Then I check this "return", but I don't understand why "if" does not work because the return equal 1.



    Code:



    #!/bin/bash
    # Main folders
    INPUT="input"
    OUTPUT="output"

    # Functions

    function checkFolderExist(){
    if [ -d $1 ]
    then
    # 0 = true
    # Change to 0, only for tests.
    return 1
    else
    mkdir $1
    result=$?
    if [ result==0 ]
    then
    # 0 = true
    return 0
    else
    # 1 = false
    return 1
    fi
    fi
    }


    CHECKINPUT=$(checkFolderExist $INPUT)
    echo $?
    CHECKOUTPUT=$(checkFolderExist $OUTPUT)
    echo $?

    # If folders does not exist, exit the script
    if [[ "$CHECKINPUT" = 1 || "$CHECKOUTPUT" = 1 ]]; then
    echo "[+] Error. Folder does not exist. Check user permissions."
    exit 1
    fi









    share|improve this question



























      4












      4








      4








      I've set a function in a shell script that checks if a folder exists, if it does not exist, tries to created it, and if it can not create the folder (for example if the user does not the right permission) return 1.
      Then I check this "return", but I don't understand why "if" does not work because the return equal 1.



      Code:



      #!/bin/bash
      # Main folders
      INPUT="input"
      OUTPUT="output"

      # Functions

      function checkFolderExist(){
      if [ -d $1 ]
      then
      # 0 = true
      # Change to 0, only for tests.
      return 1
      else
      mkdir $1
      result=$?
      if [ result==0 ]
      then
      # 0 = true
      return 0
      else
      # 1 = false
      return 1
      fi
      fi
      }


      CHECKINPUT=$(checkFolderExist $INPUT)
      echo $?
      CHECKOUTPUT=$(checkFolderExist $OUTPUT)
      echo $?

      # If folders does not exist, exit the script
      if [[ "$CHECKINPUT" = 1 || "$CHECKOUTPUT" = 1 ]]; then
      echo "[+] Error. Folder does not exist. Check user permissions."
      exit 1
      fi









      share|improve this question
















      I've set a function in a shell script that checks if a folder exists, if it does not exist, tries to created it, and if it can not create the folder (for example if the user does not the right permission) return 1.
      Then I check this "return", but I don't understand why "if" does not work because the return equal 1.



      Code:



      #!/bin/bash
      # Main folders
      INPUT="input"
      OUTPUT="output"

      # Functions

      function checkFolderExist(){
      if [ -d $1 ]
      then
      # 0 = true
      # Change to 0, only for tests.
      return 1
      else
      mkdir $1
      result=$?
      if [ result==0 ]
      then
      # 0 = true
      return 0
      else
      # 1 = false
      return 1
      fi
      fi
      }


      CHECKINPUT=$(checkFolderExist $INPUT)
      echo $?
      CHECKOUTPUT=$(checkFolderExist $OUTPUT)
      echo $?

      # If folders does not exist, exit the script
      if [[ "$CHECKINPUT" = 1 || "$CHECKOUTPUT" = 1 ]]; then
      echo "[+] Error. Folder does not exist. Check user permissions."
      exit 1
      fi






      bash shell-script






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 12 hours ago









      Rui F Ribeiro

      41.9k1483142




      41.9k1483142










      asked 12 hours ago









      jaskjask

      414




      414






















          3 Answers
          3






          active

          oldest

          votes


















          11














          There's a few things here.




          • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

          • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

          • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

          • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

          • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.


          With these things in mind:



          create_dir_if_needed () {
          mkdir -p -- "$1"
          }


          This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



          You would use this as



          if ! create_dir_if_needed "$dirpath"; then
          printf 'Failed to create directory "%s"n' "$dirpath" >&2
          exit 1
          fi


          or, since the function is trivial, you could get rid of it and say



          if ! mkdir -p -- "$dirpath"; then
          printf 'Failed to create directory "%s"n' "$dirpath" >&2
          exit 1
          fi




          A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



          create_dir_if_needed () {
          if [ -d "$1" ]; then
          return
          fi

          mkdir -- "$1"
          }


          or,



          create_dir_if_needed () {
          [ -d "$1" ] || mkdir -- "$1"
          }


          A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.






          share|improve this answer

































            1














            Bash does not work like regular programming languages when it comes to returning values.



            Here you are confusing output from checkFolderExist with return status from checkFolderExist.



            Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



            Should you really want to save your function’s return status for later use you should rather do:



            checkFolderExist "${INPUT}"
            CHECKINPUT=$?

            checkFolderExist "${OUTPUT}"
            CHECKOUTPUT=$?


            Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.






            share|improve this answer































              1














              You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



              Either do a return:



              myfunc() {
              return 1
              }

              myfunc
              ret=$?
              [ $ret -eq 0 ] && echo OK


              or write to stdout and check the output:



              myfunc() {
              echo '1'
              }

              ret="$(myfunc)"
              [ "$ret" = '0' ] && echo OK


              Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



              It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.






              share|improve this answer


























                Your Answer








                StackExchange.ready(function() {
                var channelOptions = {
                tags: "".split(" "),
                id: "106"
                };
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function() {
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled) {
                StackExchange.using("snippets", function() {
                createEditor();
                });
                }
                else {
                createEditor();
                }
                });

                function createEditor() {
                StackExchange.prepareEditor({
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: false,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix: "",
                imageUploader: {
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                },
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                });


                }
                });














                draft saved

                draft discarded


















                StackExchange.ready(
                function () {
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f510269%2fwhich-is-the-best-way-to-check-return-result%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                11














                There's a few things here.




                • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

                • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

                • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

                • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

                • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.


                With these things in mind:



                create_dir_if_needed () {
                mkdir -p -- "$1"
                }


                This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



                You would use this as



                if ! create_dir_if_needed "$dirpath"; then
                printf 'Failed to create directory "%s"n' "$dirpath" >&2
                exit 1
                fi


                or, since the function is trivial, you could get rid of it and say



                if ! mkdir -p -- "$dirpath"; then
                printf 'Failed to create directory "%s"n' "$dirpath" >&2
                exit 1
                fi




                A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



                create_dir_if_needed () {
                if [ -d "$1" ]; then
                return
                fi

                mkdir -- "$1"
                }


                or,



                create_dir_if_needed () {
                [ -d "$1" ] || mkdir -- "$1"
                }


                A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.






                share|improve this answer






























                  11














                  There's a few things here.




                  • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

                  • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

                  • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

                  • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

                  • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.


                  With these things in mind:



                  create_dir_if_needed () {
                  mkdir -p -- "$1"
                  }


                  This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



                  You would use this as



                  if ! create_dir_if_needed "$dirpath"; then
                  printf 'Failed to create directory "%s"n' "$dirpath" >&2
                  exit 1
                  fi


                  or, since the function is trivial, you could get rid of it and say



                  if ! mkdir -p -- "$dirpath"; then
                  printf 'Failed to create directory "%s"n' "$dirpath" >&2
                  exit 1
                  fi




                  A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



                  create_dir_if_needed () {
                  if [ -d "$1" ]; then
                  return
                  fi

                  mkdir -- "$1"
                  }


                  or,



                  create_dir_if_needed () {
                  [ -d "$1" ] || mkdir -- "$1"
                  }


                  A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.






                  share|improve this answer




























                    11












                    11








                    11







                    There's a few things here.




                    • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

                    • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

                    • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

                    • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

                    • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.


                    With these things in mind:



                    create_dir_if_needed () {
                    mkdir -p -- "$1"
                    }


                    This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



                    You would use this as



                    if ! create_dir_if_needed "$dirpath"; then
                    printf 'Failed to create directory "%s"n' "$dirpath" >&2
                    exit 1
                    fi


                    or, since the function is trivial, you could get rid of it and say



                    if ! mkdir -p -- "$dirpath"; then
                    printf 'Failed to create directory "%s"n' "$dirpath" >&2
                    exit 1
                    fi




                    A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



                    create_dir_if_needed () {
                    if [ -d "$1" ]; then
                    return
                    fi

                    mkdir -- "$1"
                    }


                    or,



                    create_dir_if_needed () {
                    [ -d "$1" ] || mkdir -- "$1"
                    }


                    A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.






                    share|improve this answer















                    There's a few things here.




                    • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

                    • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

                    • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

                    • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

                    • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.


                    With these things in mind:



                    create_dir_if_needed () {
                    mkdir -p -- "$1"
                    }


                    This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



                    You would use this as



                    if ! create_dir_if_needed "$dirpath"; then
                    printf 'Failed to create directory "%s"n' "$dirpath" >&2
                    exit 1
                    fi


                    or, since the function is trivial, you could get rid of it and say



                    if ! mkdir -p -- "$dirpath"; then
                    printf 'Failed to create directory "%s"n' "$dirpath" >&2
                    exit 1
                    fi




                    A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



                    create_dir_if_needed () {
                    if [ -d "$1" ]; then
                    return
                    fi

                    mkdir -- "$1"
                    }


                    or,



                    create_dir_if_needed () {
                    [ -d "$1" ] || mkdir -- "$1"
                    }


                    A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited 11 hours ago









                    Stéphane Chazelas

                    312k57592948




                    312k57592948










                    answered 12 hours ago









                    KusalanandaKusalananda

                    139k17259432




                    139k17259432

























                        1














                        Bash does not work like regular programming languages when it comes to returning values.



                        Here you are confusing output from checkFolderExist with return status from checkFolderExist.



                        Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



                        Should you really want to save your function’s return status for later use you should rather do:



                        checkFolderExist "${INPUT}"
                        CHECKINPUT=$?

                        checkFolderExist "${OUTPUT}"
                        CHECKOUTPUT=$?


                        Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.






                        share|improve this answer




























                          1














                          Bash does not work like regular programming languages when it comes to returning values.



                          Here you are confusing output from checkFolderExist with return status from checkFolderExist.



                          Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



                          Should you really want to save your function’s return status for later use you should rather do:



                          checkFolderExist "${INPUT}"
                          CHECKINPUT=$?

                          checkFolderExist "${OUTPUT}"
                          CHECKOUTPUT=$?


                          Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.






                          share|improve this answer


























                            1












                            1








                            1







                            Bash does not work like regular programming languages when it comes to returning values.



                            Here you are confusing output from checkFolderExist with return status from checkFolderExist.



                            Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



                            Should you really want to save your function’s return status for later use you should rather do:



                            checkFolderExist "${INPUT}"
                            CHECKINPUT=$?

                            checkFolderExist "${OUTPUT}"
                            CHECKOUTPUT=$?


                            Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.






                            share|improve this answer













                            Bash does not work like regular programming languages when it comes to returning values.



                            Here you are confusing output from checkFolderExist with return status from checkFolderExist.



                            Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



                            Should you really want to save your function’s return status for later use you should rather do:



                            checkFolderExist "${INPUT}"
                            CHECKINPUT=$?

                            checkFolderExist "${OUTPUT}"
                            CHECKOUTPUT=$?


                            Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered 11 hours ago









                            LL3LL3

                            8267




                            8267























                                1














                                You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



                                Either do a return:



                                myfunc() {
                                return 1
                                }

                                myfunc
                                ret=$?
                                [ $ret -eq 0 ] && echo OK


                                or write to stdout and check the output:



                                myfunc() {
                                echo '1'
                                }

                                ret="$(myfunc)"
                                [ "$ret" = '0' ] && echo OK


                                Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



                                It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.






                                share|improve this answer






























                                  1














                                  You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



                                  Either do a return:



                                  myfunc() {
                                  return 1
                                  }

                                  myfunc
                                  ret=$?
                                  [ $ret -eq 0 ] && echo OK


                                  or write to stdout and check the output:



                                  myfunc() {
                                  echo '1'
                                  }

                                  ret="$(myfunc)"
                                  [ "$ret" = '0' ] && echo OK


                                  Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



                                  It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.






                                  share|improve this answer




























                                    1












                                    1








                                    1







                                    You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



                                    Either do a return:



                                    myfunc() {
                                    return 1
                                    }

                                    myfunc
                                    ret=$?
                                    [ $ret -eq 0 ] && echo OK


                                    or write to stdout and check the output:



                                    myfunc() {
                                    echo '1'
                                    }

                                    ret="$(myfunc)"
                                    [ "$ret" = '0' ] && echo OK


                                    Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



                                    It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.






                                    share|improve this answer















                                    You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



                                    Either do a return:



                                    myfunc() {
                                    return 1
                                    }

                                    myfunc
                                    ret=$?
                                    [ $ret -eq 0 ] && echo OK


                                    or write to stdout and check the output:



                                    myfunc() {
                                    echo '1'
                                    }

                                    ret="$(myfunc)"
                                    [ "$ret" = '0' ] && echo OK


                                    Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



                                    It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.







                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    edited 7 hours ago

























                                    answered 7 hours ago









                                    rexkogitansrexkogitans

                                    395213




                                    395213






























                                        draft saved

                                        draft discarded




















































                                        Thanks for contributing an answer to Unix & Linux Stack Exchange!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid



                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.


                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function () {
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f510269%2fwhich-is-the-best-way-to-check-return-result%23new-answer', 'question_page');
                                        }
                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown







                                        Popular posts from this blog

                                        Lallio

                                        Futebolista

                                        Jornalista